Wie wandle ich ein Objekt in einen Booleschen Wert um?

77

Wie kann ich ein Java-Objekt in ein boolesches Grundelement umwandeln?

Ich habe es wie unten versucht, aber es funktioniert nicht

boolean di = new Boolean(someObject).booleanValue();

Der Konstruktor Boolean (Object) ist undefiniert

Bitte beraten.

Ravi Gupta
quelle

Antworten:

132

Wenn das Objekt tatsächlich eine BooleanInstanz ist, wandeln Sie es einfach um:

boolean di = (Boolean) someObject;

Die explizite Umwandlung führt die Konvertierung in durch Boolean, und dann erfolgt das automatische Entpacken in den primitiven Wert. Oder Sie können das explizit tun:

boolean di = ((Boolean) someObject).booleanValue();

Wenn someObjectsich der Code jedoch nicht auf einen Booleschen Wert bezieht, was soll der Code tun?

Jon Skeet
quelle
1
Nein, es ist keine boolesche Instanz, hat aber den Wert wahr oder falsch
Ravi Gupta
3
Ich bin gespannt, welcher Typ die Variable ist ... :)
Helios
13
Angenommen, true / false sind Zeichenfolgen, die Sie verwenden könnten: boolean b = Boolean.parseBoolean (String.valueOf (someObject)); Beachten Sie, dass dies für jeden anderen String-Wert als "true" (ohne Berücksichtigung der Groß- und Kleinschreibung) false zurückgibt und daher false zurückgibt, wenn someObject null ist.
Adamski
@ Jon Beantworten Sie die Frage, die Sie in der letzten Zeile gestellt haben. Wir können die instanceOfMethode verwenden, bevor wir sie in Boolean umwandeln. Dies gibt keine Umwandlungsausnahme.
Vikiiii
@vikiiii: Ich bin mir der Instanz bewusst, aber das ist eine Frage, wie wir sie überprüfen können - das beantwortet nicht die Frage, die ich gestellt habe, welches das gewünschte Verhalten ist .
Jon Skeet
34

Angenommen, yourObject.toString () gibt "true" oder "false" zurück, können Sie es versuchen

boolean b = Boolean.valueOf(yourObject.toString())
chburd
quelle
Haben Sie Probleme zu verstehen, warum toString () erforderlich ist. Wenn es kein String ist, dann ist es nur ein Objekt?
James P.
2
weil yourObject eine Instanz vom Typ Object ist und die valueOf-Methode einen String akzeptiert.
Neets
2
Dies sollte wohl sein , Boolean.parseBooleanBoxen und Unboxing ein zu vermeiden Boolean.
Ben Lings