ブール値がnullかどうかをどのように確認しますか?したがって、「hideInNav」がnullであることがわかっている場合。実行を停止するにはどうすればよいですか?以下のようなものは動作しないようですが、なぜですか?
boolean hideInNav = parent.getProperties().get("hideInNav", false);
String hideNavigation = hideInNav != null ? hideInNav : "";
boolean
は、 プリミティブデータ型 (+ a true
変数のデフォルト値はfalse
)であるため、boolean
またはfalse
のみです。 Boolean
値を使用する場合は、代わりにクラスnull
を使用できます。ブールは参照型です。これが、null
をブールの「変数」に割り当てることができる理由です。例:
Boolean testvar = null;
if (testvar == null) { ...}
Javaでは、boolean
をnull
にすることはできません。
ただし、Boolean
はnull
にできます。
boolean
に値(クラスのメンバーなど)が割り当てられていない場合、デフォルトではfalse
になります。
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
Javaでは、null
はオブジェクト参照にのみ適用されます。 boolean
はプリミティブ型であるため、null
を割り当てることはできません。
あなたの例からコンテキストを得るのは難しいですが、hideInNav
がgetProperties()
によって返されるオブジェクトにない場合、指定した(デフォルト値?)はfalse
になると推測しています。 false
がnull
と等しくないため、hideNavigation
が空の文字列を取得しているので、これはあなたが見ているバグだと思いますか?
コードサンプルのコンテキストを少し上げると、より良い回答が得られる場合があります。
boolean
はプリミティブ型であるため、nullにすることはできません。
そのボックス化されたタイプBoolean
はnullにできます。
この関数は、おそらくBoolean
ではなくboolean
を返しているので、結果をBoolean
- type変数に割り当てることで、NULLをテストできます。
null
は、参照タイプに割り当てられた値です。 null
は予約値であり、参照がオブジェクトのインスタンスに似ていないことを示します。
boolean
はオブジェクトのインスタンスではありません。 int
やfloat
のようなプリミティブ型です。同じ方法で:int x
は0
の値を持ち、boolean x
はfalse
の値を持ちます。