Question

Existe-t-il un meilleur moyen de nier un booléen en Java qu'un simple if-else?

if (theBoolean) {
    theBoolean = false;
} else {
    theBoolean = true;
}
Était-ce utile?

La solution

theBoolean = !theBoolean;

Autres conseils

theBoolean ^= true;

Moins de frappes au clavier si votre variable a plus de quatre lettres

Il y en a plusieurs

Le "évident" " manière (pour la plupart des gens)

theBoolean = !theBoolean;

Le "plus court" " manière (la plupart du temps)

theBoolean ^= true;

Le "plus visuel" " manière (le plus incertain)

theBoolean = theBoolean ? false : true;

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

theMethod( theBoolean ^= true );

Etant donné que l'opérateur d'affectation renvoie toujours ce qui a été affecté, cette option bascule la valeur via l'opérateur bit à bit, puis renvoie la nouvelle valeur affectée à utiliser dans l'appel de méthode.

Si vous utilisez des valeurs booléennes NULL et que vous les considérez comme fausses, essayez ceci:

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

Si vous ne donnez pas de valeur booléenne NULL, essayez ceci:

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

Ce sont les les plus propres , car ils montrent l'intention dans la signature de la méthode, sont plus faciles à lire que l'opérateur ! et peuvent être facilement débogués.

Utilisation

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 qui autorise les méthodes d’extension, vous pouvez enregistrer une extension et faire tout simplement:

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

Si vous ne faites rien de particulièrement professionnel, vous pouvez toujours utiliser une classe Util. Ex, une classe util d'un projet pour une classe.

public class Util {


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

}

alors créez simplement un objet Util Util u = new Util (); et avoir quelque chose pour le retour System.out.println (u.flip (bool));

Si vous finissez par utiliser la même chose encore et encore, utilisez une méthode, et surtout si cela concerne plusieurs projets, créez une classe Util. Je ne sais pas quelle est la norme de l'industrie. (Les programmeurs expérimentés sont libres de me corriger)

Avant:

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

Après:

boolean result = isresult();
result ^= true;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top