web-dev-qa-db-ja.com

Javaブール値の逆を取得する最も簡潔な方法は何ですか?

ブール変数がある場合:

boolean myBool = true;

If/else句を使用すると、これの逆を取得できます。

if (myBool == true)
 myBool = false;
else
 myBool = true;

これを行うためのより簡潔な方法はありますか?

34
faq

条件ステートメント(ifforwhile...)でよく行うように、論理NOT演算子!を使用して割り当てます。すでにブール値を使用しているため、truefalseに反転します(逆も同様です)。

myBool = !myBool;
92
BoltClock

さらにクールな方法(set変数を使用する場合、4文字より長い変数名の場合は_myBool = !myBool_よりも簡潔です):

_myBool ^= true;
_

ちなみに、if (something == true)は使用しないでください。if (something)を実行する方が簡単です(falseとの比較と同じ、否定演算子を使用します)。

41
fortran

booleanの場合は非常に簡単ですが、Booleanの場合は少し難しくなります。

  • booleanには、truefalseの2つの状態しかありません。
  • 一方、Booleanには3があります:Boolean.TRUEBoolean.FALSEまたはnull

boolean(プリミティブ型)を扱っていると仮定すると、最も簡単なことは次のとおりです。

boolean someValue = true; // or false
boolean negative = !someValue;

ただし、Boolean(オブジェクト)を反転する場合は、null値に注意する必要があります。または、NullPointerExceptionになる可能性があります。

Boolean someValue = null;
Boolean negativeObj = !someValue.booleanValue(); --> throws NullPointerException.

この値が決してnullではなく、あなたの会社や組織が自動(アン)ボックス化に対するコードルールを持たないと仮定します。実際には、1行で書くことができます。

Boolean someValue = Boolean.TRUE; // or Boolean.FALSE
Boolean negativeObj = !someValue;

ただし、null値にも注意を払う必要がある場合。次に、いくつかの解釈があります。

boolean negative = !Boolean.TRUE.equals(someValue); //--> this assumes that the inverse of NULL should be TRUE.

// if you want to convert it back to a Boolean object, then add the following.
Boolean negativeObj = Boolean.valueOf(negative);

一方、nullを反転後もnullのままにする場合は、Apache commons class BooleanUtilsjavadocを参照

Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
Boolean negativeObj = BooleanUtils.negate(someValue);

Apacheの依存関係を避けるため、すべてを書き出すことを好む人もいます。

Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
boolean negative = (someValue == null)? null : !someValue.booleanValue();
Boolean negativeObj = Boolean.valueOf(negative);
12
bvdb

最も簡潔な方法は、ブール値を反転させず、反対の条件を確認したいときにコードで後で!myBoolを使用することです。

1
Daniel Widdis