Le moyen le plus propre de basculer une variable booléenne en Java?

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

Il y a plusieurs

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; 

Extra: bascule et utilise dans un appel de méthode

 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;