2012-04-25 19 views
5

Podczas próby przekształcenia obiektu String obiektu na boolean, wynik jest inny.Obiekt ciągu znaków do obiektu Boolean

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

boolFlag kończy się o wartości false.

+6

Boolean.getBoolean nie robić to, co myślisz, że to robi. Przeczytaj instrukcję. – Corbin

+1

Nie jestem pewien, ale może jest w nim rozróżniana wielkość liter? A propos, dlaczego nie używasz 'Boolean.parseBoolean (string);'? – Leri

+3

@ GPL nie są zbyt użyteczne, w szczególności niepoprawne domysły, takie jak ta. OP powinien zapoznać się z podręcznikiem zgodnie z zaleceniami, a Ty też powinieneś. – EJP

Odpowiedz

8

Korzystając Boolean.valueOf(String string) do Archiwum swój cel.

boolean boolFlag = Boolean.valueOf(strFlag); 

Zwraca Boolean o wartości reprezentowanej przez określony ciąg. Zwrócona wartość Boolean reprezentuje wartość true, jeśli argument string nie jest pusty i jest równy, ignorując wielkość liter, do łańcucha "true".

Przykład: Boolean.valueOf("True") zwraca true.

Przykład: Boolean.valueOf("yes") zwraca wartość false.

Ponieważ Java 1.5 jest również Boolean.parseBoolean(String s) która zwraca prymitywny typ boolean zamiast pudełkowej typu Boolean oszczędzić kilka cykli procesora w większości przypadków.

+0

jeśli 'strFlag' zawiera wartość false? – Mdhar9e

+1

wtedy 'boolFlag' jest fałszywe.Ponieważ 'boolean' może być tylko prawdą lub fałszem, wystarczy sprawdzić jedną z nich, w zależności od tego, jaka powinna być wartość" domyślna ". Dla opakowania 'Boolean' miałbyś rację, ponieważ ten mógłby stać się' null'. – devsnd

+1

Lub po prostu 'boolean boolFlag =" true ".equalsIgnoreCase (strFlag);' – Jesper

3

Można użyć

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

Jeśli strFlag miałby wartość 'null', to dałoby to' NullPointerException'. – devsnd

+0

dzięki za korektę –

10

Zastosowanie Boolean.valueOf

boolean boolFlag = Boolean.valueOf(strFlag); 

Metoda ta zwraca wartość logiczną o wartości reprezentowanej przez określony ciąg. Zwrócona wartość Boolean reprezentuje wartość true, jeśli argument string nie jest pusty i jest równy, ignorując wielkość liter, do łańcucha "true".

+0

ok .. spróbuję z tym. Wydaje się działać. – Mdhar9e

+0

Korzystanie z wbudowanych jest lepszym rozwiązaniem niż moje rozwiązanie. +1 – devsnd

+0

jeśli przechowujesz dane w prymitywie, to parsowanie jest bardzo, bardzo nieznacznie szybsze (ponieważ pozwala uniknąć rozpakowywania), ale czas ten będzie w każdym razie mniejszy niż czas parse, więc nie będzie problemu. – user439407

4

Boolean.getBoolean testy aby sprawdzić, czy dana nieruchomość system jest prawdą, chcesz Boolean.parseBoolean

+0

możesz upuścić kawałek kodu. – Mdhar9e

3

spróbuje użyć Boolean.valueOf(strFlag)

3

Korzystając Boolean.parseBoolean

boolean boolFlag = Boolean.parseBoolean(strFlag); 

Ta metoda zwraca logiczną prymitywny rodzaj. Działa tak samo jak Boolean.valueOf, bez kosztów rozpakowywania.

Powiązane problemy