web-dev-qa-db-ja.com

Java booleanがnullかどうかを確認

ブール値がnullかどうかをどのように確認しますか?したがって、「hideInNav」がnullであることがわかっている場合。実行を停止するにはどうすればよいですか?以下のようなものは動作しないようですが、なぜですか?

boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
59
Delmon Young

booleanは、 プリミティブデータ型 (+ a true変数のデフォルト値はfalse)であるため、booleanまたはfalseのみです。 Boolean値を使用する場合は、代わりにクラスnullを使用できます。ブールは参照型です。これが、nullをブールの「変数」に割り当てることができる理由です。例:

Boolean testvar = null;
if (testvar == null) { ...}
105
Eich

Javaでは、booleannullにすることはできません。

ただし、Booleannullにできます。

booleanに値(クラスのメンバーなど)が割り当てられていない場合、デフォルトではfalseになります。

37
Trevor Freeman

nullになり得る唯一のものは、非プリミティブ型です。

booleanまたはTRUEのみを保持できるFALSEはプリミティブです。メモリ内のTRUE/FALSEは実際には数字です(0および1

0 =偽

1 = TRUE

したがって、オブジェクトをインスタンス化すると、null String str; // will equal nullになります

一方、プリミティブをインスタンス化すると、デフォルトの0が割り当てられます。

boolean isTrue; // will be 0

int i; // will be 0

7
Joban Dhillon

Javaでは、nullはオブジェクト参照にのみ適用されます。 booleanはプリミティブ型であるため、nullを割り当てることはできません。

あなたの例からコンテキストを得るのは難しいですが、hideInNavgetProperties()によって返されるオブジェクトにない場合、指定した(デフォルト値?)はfalseになると推測しています。 falsenullと等しくないため、hideNavigationが空の文字列を取得しているので、これはあなたが見ているバグだと思いますか?

コードサンプルのコンテキストを少し上げると、より良い回答が得られる場合があります。

7
Tom

booleanはプリミティブ型であるため、nullにすることはできません。

そのボックス化されたタイプBooleanはnullにできます。

この関数は、おそらくBooleanではなくbooleanを返しているので、結果をBoolean- type変数に割り当てることで、NULLをテストできます。

6
Kenogu Labz

nullは、参照タイプに割り当てられた値です。 nullは予約値であり、参照がオブジェクトのインスタンスに似ていないことを示します。

booleanはオブジェクトのインスタンスではありません。 intfloatのようなプリミティブ型です。同じ方法で:int x0の値を持ち、boolean xfalseの値を持ちます。

3
christopher