Y a-t-il un meilleur moyen de nier un booléen en Java qu’un simple sinon?
if (theBoolean) { theBoolean = false; } else { theBoolean = true; }
theBoolean = !theBoolean;
theBoolean ^= true;
Moins de frappes si votre variable est plus longue que quatre lettres
La voie “évidente” (pour la plupart des gens)
theBoolean = !theBoolean;
La manière la plus courte (la plupart du temps)
theBoolean ^= true;
Le moyen le plus visuel (le plus incertain)
theBoolean = theBoolean ? false : true;
theMethod( theBoolean ^= true );
Étant donné que l’opérateur d’affectation retourne toujours ce qui a été atsortingbué, cela bascule la valeur via l’opérateur bit à bit, puis renvoie la valeur nouvellement atsortingbuée à utiliser dans l’appel de méthode.
Si vous utilisez des valeurs NULL booléennes et les considérez comme fausses, essayez ceci:
static public boolean toggle(Boolean aBoolean) { if (aBoolean == null) return true; else return !aBoolean; }
Si vous ne transmettez pas de valeurs booléennes NULL, essayez ceci:
static public boolean toggle(boolean aBoolean) { return !aBoolean; }
Ce sont les plus propres car ils montrent l’intention dans la signature de la méthode, sont plus faciles à lire par rapport à la ! opérateur, et peut être facilement débogué.
Usage
boolean bTrue = true boolean bFalse = false boolean bNull = null toggle(bTrue) // == false toggle(bFalse) // == true toggle(bNull) // == true
Bien sûr, si vous utilisez Groovy ou un langage autorisant les méthodes d’extension, vous pouvez enregistrer une extension et faire simplement:
Boolean b = false b = b.toggle() // == true
Avant:
boolean result = isresult(); if (result) { result = false; } else { result = true; }
Après:
boolean result = isresult(); result ^= true;