web-dev-qa-db-ja.com

Javaでブール変数を切り替える最もクリーンな方法は?

単純なif-elseよりもJavaのブール値を無効にするより良い方法はありますか?

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

変数が4文字より長い場合は、キーストロークが少なくなります

155
user19302

いくつかあります

「明白な」方法(ほとんどの人にとって)

theBoolean = !theBoolean;

「最短」の方法(ほとんどの場合)

theBoolean ^= true;

「最も視覚的な」方法(ほとんど不確か)

theBoolean = theBoolean ? false : true;

追加:トグルしてメソッド呼び出しで使用する

theMethod( theBoolean ^= true );

代入演算子は常に割り当てられたものを返すため、ビット単位演算子を介して値を切り替えてから、メソッド呼び出しで使用される新しく割り当てられた値を返します。

28
Levit

ブール値のNULL値を使用し、それらをfalseとみなす場合、これを試してください:

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

ブールNULL値を渡さない場合は、これを試してください。

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

これらはcleanestです。これらはメソッドシグネチャに意図を示し、演算子に比べて読みやすく、簡単にデバッグできるためです。

使用法

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

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

もちろん、Groovyまたは拡張メソッドを許可する言語を使用する場合は、拡張機能を登録して次の操作を実行できます。

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

特に専門的なことをしていない場合は、常にUtilクラスを使用できます。例:クラスのプロジェクトからのutilクラス。

public class Util {


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

}

utilオブジェクトUtil u = new Util();を作成し、戻り値System.out.println( u.flip(bool) );

同じものを何度も繰り返し使用する場合は、メソッドを使用します。特にプロジェクト間で使用する場合は、Utilクラスを作成します。しかし、業界標準とは何ですか。 (経験のあるプログラマーは私を自由に修正してください)

0
Will D.

「Java反転ブール関数」を検索すると、この答えが出ました。以下の例は、特定の静的解析ツールがロジックの分岐によりビルドに失敗するのを防ぎます。これは、ブール値を反転する必要があり、包括的な単体テストを構築していない場合に便利です;)

Boolean.valueOf(aBool).equals(false)

または、代わりに:

Boolean.FALSE.equals(aBool)

または

Boolean.FALSE::equals
0