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.

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?


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())

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.