2012-04-25 20 views
5

Quando ho provato a convertire una stringa su booleano, il risultato è diverso.Oggetto stringa a Boolean

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

boolFlag finisce per avere un valore false.

+6

Boolean.getBoolean non fai quello che pensi lo fa. Leggi il manuale. – Corbin

+1

Non sono sicuro, ma forse è case sensitive? A proposito, perché non usi 'Boolean.parseBoolean (string);'? – Leri

+3

Le puntate di @PLB non sono molto utili, specialmente ipotesi errate come questa. OP dovrebbe leggere il manuale come consigliato, e così dovresti. – EJP

risposta

8

Usa Boolean.valueOf(String string) di raggiungere un 'il tuo obiettivo.

boolean boolFlag = Boolean.valueOf(strFlag); 

Restituisce un valore booleano con un valore rappresentato dalla stringa specificata. Il valore restituito booleano rappresenta il valore true se l'argomento stringa non è nullo ed è uguale, ignorando il caso, alla stringa "true".

Esempio: Boolean.valueOf("True") restituisce true.

Esempio: Boolean.valueOf("yes") restituisce falso.

Come di Java 1.5 c'è anche Boolean.parseBoolean(String s) che restituisce il tipo primitivo boolean invece del tipo scatolato Boolean di risparmiare alcuni cicli di CPU nella maggior parte dei casi.

+0

se 'strFlag' contiene un valore falso? – Mdhar9e

+1

quindi 'boolFlag' è falso.Dato che 'boolean' può essere solo vero o falso, è sufficiente controllare uno di essi, a seconda di cosa dovrebbe essere il" default ". Per il wrapper 'Boolean' avresti ragione, dal momento che uno potrebbe diventare' null'. – devsnd

+1

O semplicemente 'boolean boolFlag =" true ".equalsIgnoreCase (strFlag);' – Jesper

3

È possibile utilizzare

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

Se strFlag sarebbe 'null' questo ti darebbe un' NullPointerException'. – devsnd

+0

grazie per la correzione –

10

Usa Boolean.valueOf

boolean boolFlag = Boolean.valueOf(strFlag); 

questo metodo restituisce un valore booleano con un valore rappresentato dalla stringa specificata. Il valore restituito booleano rappresenta il valore true se l'argomento stringa non è nullo ed è uguale, ignorando il caso, alla stringa "true".

+0

ok .. ci proverò. Sembra funzionare. – Mdhar9e

+0

L'utilizzo dei built-in è un'opzione migliore della mia soluzione. +1 – devsnd

+0

se si sta memorizzando in una primitiva, quindi l'analisi è molto, molto leggermente più veloce (in quanto evita l'unboxing), ma quel tempo sarà comunque sminuito dal tempo di analisi, quindi è un non-problema. – user439407

4

Boolean.getBoolean test per vedere se la proprietà di sistema dato è vero, si vuole Boolean.parseBoolean

+0

puoi rilasciare un pezzo di codice. – Mdhar9e

3

tenta di utilizzare Boolean.valueOf(strFlag)

3

Usa Boolean.parseBoolean

boolean boolFlag = Boolean.parseBoolean(strFlag); 

Questo metodo restituisce un valore booleano primitiva genere. Funziona come Boolean.valueOf, senza il costo di unboxing.