it-swarm.com.de

Der sauberste Weg, um eine boolesche Variable in Java umzuschalten?

Gibt es eine bessere Möglichkeit, einen Booleschen Wert in Java) zu negieren als ein einfaches if-else?

if (theBoolean) {
    theBoolean = false;
} else {
    theBoolean = true;
}
198
Kevin Griffin
theBoolean = !theBoolean;
500
Aaron Maenpaa
theBoolean ^= true;

Weniger Tastenanschläge, wenn Ihre Variable länger als vier Buchstaben ist

155
user19302

Es gibt einige

Der "offensichtliche" Weg (für die meisten Leute)

theBoolean = !theBoolean;

Der "kürzeste" Weg (meistens)

theBoolean ^= true;

Der "visuellste" Weg (am unsichersten)

theBoolean = theBoolean ? false : true;

Extra: Umschalten und in einem Methodenaufruf verwenden

theMethod( theBoolean ^= true );

Da der Zuweisungsoperator immer das zurückgibt, was zugewiesen wurde, wird der Wert über den bitweisen Operator umgeschaltet und anschließend der neu zugewiesene Wert zurückgegeben, der im Methodenaufruf verwendet werden soll.

28
Levit

Wenn Sie Boolesche NULL-Werte verwenden und diese als falsch betrachten, versuchen Sie Folgendes:

static public boolean toggle(Boolean aBoolean) {
    if (aBoolean == null) return true;
    else return !aBoolean;
}

Wenn Sie keine Booleschen NULL-Werte übergeben, versuchen Sie Folgendes:

static public boolean toggle(boolean aBoolean) {
   return !aBoolean;
}

Dies sind die saubersten, da sie die Absichten in der Methodensignatur anzeigen, im Vergleich zum ! - Operator leichter zu lesen sind und sich leicht debuggen lassen.

Verwendung

boolean bTrue = true
boolean bFalse = false
boolean bNull = null

toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true

Wenn Sie Groovy oder eine Sprache verwenden, die Erweiterungsmethoden zulässt, können Sie natürlich eine Erweiterung registrieren und einfach Folgendes tun:

Boolean b = false
b = b.toggle() // == true
2
Steven Spungin

Wenn Sie nichts besonders Professionelles tun, können Sie immer eine Util-Klasse verwenden. Beispiel: Eine Util-Klasse aus einem Projekt für eine Klasse.

public class Util {


public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }

}

dann erstelle einfach ein Util-Objekt Util u = new Util(); und habe etwas für den return System.out.println( u.flip(bool) );

Wenn Sie am Ende immer wieder dasselbe verwenden, wenden Sie eine Methode an, und vor allem, wenn es projektübergreifend ist, erstellen Sie eine Util-Klasse. Keine Ahnung, was der Industriestandard ist. (Erfahrene Programmierer können mich gerne korrigieren)

0
Will D.

Diese Antwort ergab sich bei der Suche nach "Java Invert Boolean Function". Das folgende Beispiel verhindert, dass bestimmte statische Analysetools Builds aufgrund von Verzweigungslogik nicht ausführen können. Dies ist nützlich, wenn Sie einen Booleschen Wert invertieren müssen und keine umfassenden Komponententests erstellt haben.

Boolean.valueOf(aBool).equals(false)

oder alternativ:

Boolean.FALSE.equals(aBool)

oder

Boolean.FALSE::equals
0