Manera más limpia de alternar una variable booleana en Java?

¿Hay una mejor manera de negar un booleano en Java que un simple if-else?

if (theBoolean) { theBoolean = false; } else { theBoolean = true; } 

 theBoolean = !theBoolean; 
 theBoolean ^= true; 

Menos pulsaciones de teclas si su variable tiene más de cuatro letras

Hay varios

La forma “obvia” (para la mayoría de las personas)

 theBoolean = !theBoolean; 

La forma “más corta” (la mayor parte del tiempo)

 theBoolean ^= true; 

La forma “más visual” (más incierta)

 theBoolean = theBoolean ? false : true; 

Extra: alternar y usar en una llamada a un método

 theMethod( theBoolean ^= true ); 

Dado que el operador de asignación siempre devuelve lo que se ha asignado, esto alternará el valor a través del operador bit a bit, y luego devolverá el valor recientemente asignado para ser utilizado en la llamada al método.

Si usa valores booleanos NULL y los considera falsos, intente esto:

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

Si no está entregando valores NULL Booleanos, intente esto:

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

Estos son los más limpios porque muestran la intención en la firma del método, son más fáciles de leer en comparación con el ! operador, y puede ser fácilmente depurado.

Uso

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

Por supuesto, si usa Groovy o un lenguaje que permite métodos de extensión, puede registrar una extensión y simplemente hacer:

 Boolean b = false b = b.toggle() // == true 

Antes de:

 boolean result = isresult(); if (result) { result = false; } else { result = true; } 

Después:

 boolean result = isresult(); result ^= true;