Wie man konvertiert String
Objekt zu Boolean
Objekt?
Antworten
Zu viele Anzeigen?Versuchen Sie es (je nachdem, welche Art von Ergebnis Sie wünschen):
Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");
Vorteil:
- Boolean: Es werden keine neuen Instanzen von Boolean erstellt, so dass die Leistung besser ist (und weniger Müll gesammelt wird). Es verwendet die beiden Instanzen von entweder
Boolean.TRUE
oBoolean.FALSE
. - boolean: Es wird keine Instanz benötigt, man verwendet den primitiven Typ.
Die offizielle Dokumentation befindet sich in der Javadoc .
AKTUALISIERT:
Autoboxing könnte auch verwendet werden, aber es kostet Leistung.
Ich schlage vor, sie nur dann zu verwenden, wenn Sie sich selbst werfen müssten, nicht wenn der Wurf vermeidbar ist.
Sie müssen vorsichtig sein, wenn Sie Boolean.valueOf(string) o Boolean.parseBoolean(string) . Der Grund dafür ist, dass die Methoden immer false zurückgeben, wenn der String nicht gleich "true" ist (der Fall wird ignoriert).
Zum Beispiel:
Boolean.valueOf("YES") -> false
Aufgrund dieses Verhaltens würde ich empfehlen, einen Mechanismus hinzuzufügen, der sicherstellt, dass die Zeichenkette, die in einen Booleschen Wert übersetzt werden soll, einem bestimmten Format folgt.
Zum Beispiel:
if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
Boolean.valueOf(string)
// do something
} else {
// throw some exception
}
Neben der hervorragenden Antwort von KLE können wir auch etwas flexibler vorgehen:
boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") ||
string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") ||
string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") ||
string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");
(inspiriert durch die Antwort von zlajo... :-))
- See previous answers
- Weitere Antworten anzeigen