Java prüft, ob der Boolesche Wert null ist

73

Wie prüft man, ob ein Boolescher Wert null ist oder nicht? Wenn ich also weiß, dass "hideInNav" null ist. Wie kann ich verhindern, dass es weiter ausgeführt wird? So etwas wie das Folgende scheint nicht zu funktionieren, aber warum?

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

Antworten:

123

booleankann nur sein trueoder falseweil es sich um einen primitiven Datentyp handelt (+ ein booleanStandardwert für Variablen ist false). Sie können die Klasse Booleanstattdessen verwenden, wenn Sie nullWerte verwenden möchten . Boolean ist ein Referenztyp. Aus diesem Grund können Sie nulleiner booleschen "Variablen" zuweisen . Beispiel:

Boolean testvar = null;
if (testvar == null) { ...}
Eich
quelle
Könnte ich also etwas tun wie: ** Boolean hideInNav = parent.getProperties (). Get ("hideInNav", false); if (hideInNav! = null) {etwas tun} **
Delmon Young
1
Ja, denn dann hideInNaventhält eine Referenz auf ein BooleanObjekt und kann sein null(keine Referenz zugewiesen). Daher können Sie überprüfen, ob die Referenz ist null.
Eich
1
BooleanUtils.isTrue (java.lang.Boolean bool) ist das, was ich verwende, um seinen Status in der Bedingung zu überprüfen, da Boolean null sein kann. commons.apache.org/proper/commons-lang/javadocs/api-2.4/org/…
Youness
Ohne Apache Commons:Boolean.TRUE.equals(xxx)
Eich
54

A booleankann nicht nullin Java sein.

A Booleankann jedoch sein null.

Wenn a booleankein Wert zugewiesen wird (z. B. ein Mitglied einer Klasse), ist dies falsestandardmäßig der Fall .

Trevor Freeman
quelle
Richtige Erklärung, danke.
Sajid Khan
9

Das einzige, was ein sein kann, nullist ein Nicht-Primivit.

A, booleandas nur halten kann TRUEoder FALSEein Primitiv ist. Das TRUE/ FALSEim Speicher sind tatsächlich Zahlen ( 0und 1)

0 = FALSE

1 = WAHR

Wenn Sie also ein Objekt instanziieren, ist es null String str; // will equal null

Wenn Sie dagegen ein Grundelement instanziieren, wird es dem Standardwert 0 zugewiesen.

boolean isTrue; // will be 0

int i; // will be 0

Joban Dhillon
quelle
2
Die Großschreibung von Booleanin "A Booleanwelches ..." ist unglücklich. Eine Variable vom Typ booleankann nur trueund enthalten false, aber eine Variable vom Typ kann Booleanein BooleanObjekt enthalten, oder null.
Joshua Taylor
7

nullGilt in Java nur für Objektreferenzen. Da booleanes sich um einen primitiven Typ handelt, kann er nicht zugewiesen werden null.

Es ist schwierig, aus Ihrem Beispiel einen Kontext zu erhalten, aber ich vermute, dass hideInNavder von getProperties()Ihnen angegebene (Standardwert?) Ist, wenn er nicht in dem von zurückgegebenen Objekt enthalten ist false. Ich vermute , dass dies der Fehler ist , dass Sie sehen, wie falsenicht zu gleich null, so hideNavigationwird die leere Zeichenfolge zu bekommen?

Möglicherweise erhalten Sie bessere Antworten mit etwas mehr Kontext für Ihr Codebeispiel.

Tom
quelle
6

boolean ist ein primitiver Typ und kann daher nicht null sein.

Sein Box-Typ Booleankann null sein.

Die Funktion gibt wahrscheinlich a Booleanim Gegensatz zu a zurück boolean. Wenn Sie das Ergebnis also einer BooleanVariablen vom Typ -type zuweisen , können Sie die Nichtigkeit testen.

Kenogu Labz
quelle
4

nullist ein Wert, der einem Referenztyp zugewiesen ist. nullist ein reservierter Wert, der angibt, dass eine Referenz keiner Instanz eines Objekts ähnelt.

A booleanist keine Instanz eines Objekts. Es ist ein primitiver Typ, wie intund float. Auf die gleiche Weise wie: int xhat einen Wert von 0, boolean xhat einen Wert von false.

Christopher
quelle
Einverstanden. Nicht die beste Zeit für Rechtschreibfehler! Schnelle Bearbeitung :)
Christopher
0

boolean ist ein primitiver Datentyp in Java und primitive Datentypen können nicht wie andere primitive int, float usw. null sein. Sie sollten Standardwerte enthalten, wenn sie nicht zugewiesen sind.

In Java können nur Objekte null zugewiesen werden. Dies bedeutet, dass das entsprechende Objekt keine Referenz hat und daher keine Darstellung im Speicher enthält.

Wenn Sie also mit einem Objekt als Null arbeiten möchten , sollten Sie die Boolesche Klasse verwenden, die einen primitiven booleschen Typwert in das Objekt einschließt.

Diese werden in Java als Wrapper-Klassen bezeichnet

Zum Beispiel:

Boolean bool = readValue(...); // Read Your Value
if (bool  == null) { do This ...}
Nikunj Trivedi
quelle