2012-04-25 12 views
5

Wenn ich versuchte, ein String Objekt zu boolean zu konvertieren, ist das Ergebnis anders.String-Objekt zu Boolean

String strFlag="true"; 
boolean boolFlag = Boolean.getBoolean(strFlag); 

boolFlag endet ein false Wert.

+6

Boolean.getBoolean nicht tut, was Sie denken, es tut. Lesen Sie das Handbuch. – Corbin

+1

Ich bin mir nicht sicher, aber vielleicht ist es Groß-und Kleinschreibung? Übrigens, warum benutzt du nicht 'Boolean.parseBoolean (string);'? – Leri

+3

@PLB Vermutungen sind nicht viel, vor allem falsche Schätzungen wie diese. OP sollte das Handbuch wie empfohlen lesen, und Sie sollten es auch tun. – EJP

Antwort

8

Verwenden Boolean.valueOf(String string) Ihr Ziel archieve verwenden.

boolean boolFlag = Boolean.valueOf(strFlag); 

Gibt einen Boolean mit einem Wert, der durch den angegebenen String dargestellt. Der zurückgegebene Boolean-Wert stellt den Wert "true" dar, wenn das Zeichenfolgenargument nicht null ist und unter Beachtung der Groß-/Kleinschreibung der Zeichenfolge "true" entspricht.

Beispiel: Boolean.valueOf("True") gibt wahr zurück.

Beispiel: Boolean.valueOf("yes") gibt false zurück.

Ab Java 1.5 gibt es auch Boolean.parseBoolean(String s), die den primitiven Typen boolean anstelle des boxed Typs zurückgibt Boolean einige CPU-Zyklen in den meisten Fällen zu ersparen.

+0

wenn 'strFlag' false value enthält? – Mdhar9e

+1

dann ist das 'boolFlag' falsch.Da der 'boolean' nur wahr oder falsch sein kann, genügt es, nach einem von ihnen zu suchen, abhängig davon, was der" Standardwert "sein soll. Für den Wrapper "Boolean" hättest du recht, da dieser "null" werden könnte. – devsnd

+1

Oder einfach 'boolean boolFlag =" true ".equalsIgnoreCase (strFlag);' – Jesper

3

können Sie

boolFlag = "true".equalsIgnoreCase(strFlag); 
+2

Wenn strFlag "null" wäre, würde das eine 'NullPointerException' ergeben. – devsnd

+0

danke für die korrektur –

10

Verwenden Boolean.valueOf

boolean boolFlag = Boolean.valueOf(strFlag); 

Diese Methode gibt einen Booleschen Wert mit einem durch die spezifizierte Zeichenfolge dargestellt. Der zurückgegebene Boolean-Wert stellt den Wert "true" dar, wenn das Zeichenfolgenargument nicht null ist und unter Beachtung der Groß-/Kleinschreibung der Zeichenfolge "true" entspricht.

+0

ok .. ich werde es versuchen. Es scheint zu funktionieren. – Mdhar9e

+0

Die Verwendung der integrierten Funktionen ist eine bessere Option als meine Lösung. +1 – devsnd

+0

Wenn Sie in einem Primitiv speichern, dann ist Parse sehr, sehr leicht schneller (da es das Unboxing vermeidet), aber diese Zeit wird auf jeden Fall durch die Parse-Zeit in den Schatten gestellt, so dass es kein Problem ist. – user439407

4

Boolean.getBoolean Tests, um zu sehen, ob das System gegebene Eigenschaft wahr ist, Sie wollen Boolean.parseBoolean

+0

können Sie ein Stück Code löschen. – Mdhar9e

3

Try Boolean.valueOf(strFlag)

3

Verwenden Boolean.parseBoolean

boolean boolFlag = Boolean.parseBoolean(strFlag); 

Diese Methode gibt einen boolean primitive verwenden Art. Es funktioniert genauso wie Boolean.valueOf, ohne die Kosten für das Unboxing.