Konvertieren eines Java-Strings in einen Booleschen Wert

1. Übersicht

In diesem Tutorial werden wir die verschiedenen Möglichkeiten untersuchen, wie wir die Boolesche Klasse von Java verwenden können , um einen String in einen Booleschen Wert zu konvertieren .

2. Boolean.parseBoolean ()

Mit Boolean.parseBoolean () können wir einen String übergeben und einen primitiven Booleschen Wert empfangen .

Schreiben wir zunächst einen Test, um zu sehen, wie parseBoolean () einen String mit dem Wert true konvertiert :

assertThat(Boolean.parseBoolean("true")).isTrue();

Natürlich besteht der Test.

Tatsächlich ist die Semantik von parseBoolean () so klar, dass IntelliJ IDEA uns warnt, dass das Übergeben des String-Literal „true“ redundant ist.

Mit anderen Worten, diese Methode eignet sich hervorragend, um einen String in einen Booleschen Wert umzuwandeln .

3. Boolean.valueOf ()

Mit Boolean.valueOf () können wir auch einen String übergeben , aber diese Methode gibt eine Boolesche Klasseninstanz anstelle eines primitiven Booleschen Wertes zurück .

Wir können sehen, dass diese Methode auch bei der Konvertierung unseres Strings erfolgreich ist:

assertThat(Boolean.valueOf("true")).isTrue();

Diese Methode verwendet tatsächlich parseBoolean () , um die String- Konvertierung im Hintergrund durchzuführen , und verwendet das Ergebnis einfach, um eine statisch definierte Boolesche Instanz zurückzugeben.

Daher sollte diese Methode nur verwendet werden, wenn die zurückgegebene Boolesche Instanz benötigt wird. Wenn nur ein primitives Ergebnis benötigt wird, ist es leistungsfähiger, parseBoolean () direkt zu verwenden.

4. Boolean.getBoolean ()

Boolean.getBoolean () ist eine dritte Methode, die einen String akzeptiert und einen Booleschen Wert zurückgibt .

Ohne die Dokumentation oder die Implementierung dieser Methode zu betrachten, könnte man vernünftigerweise annehmen, dass diese Methode auch zum Konvertieren ihres String- Arguments in einen Booleschen Wert dient:

assertThat(Boolean.getBoolean("true")).isTrue(); // this test fails!

Der Grund, warum dieser Test fehlschlägt, ist, dass das String- Argument den Namen einer booleschen Systemeigenschaft darstellen soll.

Durch Definieren der Systemeigenschaft:

System.setProperty("CODING_IS_FUN", "true"); assertThat(Boolean.getBoolean("CODING_IS_FUN")).isTrue();

Schließlich besteht der Test. Die Überprüfung der Implementierung dieser Methode zeigt, dass auch sie die parseBoolean () -Methode verwendet, um ihre String- Konvertierung durchzuführen .

Beachten Sie, dass getBoolean () buchstäblich eine Verknüpfung für parseBoolean (System.getProperty ("true")) ist, was bedeutet, dass wir nicht durch den Namen irregeführt werden sollten.

Daher ist der einzige Weg Boolean.getBoolean ("true"); jemals zurückkehren wahr ist , wenn es eine Systemeigenschaft existiert namens „true“ und sein Wert Parsen in wahr .

4. Fazit

In diesem kurzen Tutorial haben wir die wichtigsten Unterschiede zwischen Boolean.parseBoolean () , Boolean.valueOf () und Boolean.getBoolean () gesehen .

Während parseBoolean () und valueOf () beide einen String in einen Booleschen Wert konvertieren , ist es wichtig zu beachten, dass Boolean.getBoolean () dies nicht tut.

Der Quellcode mit allen Beispielen in diesem Tutorial finden Sie auf Github.