2012-04-25 14 views
5

Cuando traté de convertir un String Objeto a boolean, el resultado es diferente.Cadena de objeto a Boolean

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

boolFlag termina teniendo un valor false.

+6

Boolean.getBoolean no hace lo que usted cree. Lee el manual. – Corbin

+1

No estoy seguro, pero tal vez es sensible a mayúsculas y minúsculas? Por cierto, ¿por qué no usas 'Boolean.parseBoolean (string);'? – Leri

+3

@PLB Las conjeturas no son de mucha utilidad, especialmente conjeturas incorrectas como esta. OP debería leer el manual como se lo aconsejó, y usted también. – EJP

Respuesta

8

Uso Boolean.valueOf(String string) a archieve su objetivo.

boolean boolFlag = Boolean.valueOf(strFlag); 

devuelve un booleano con un valor representado por la cadena especificada. El booleano devuelto representa el valor verdadero si el argumento de cadena no es nulo y es igual, ignorando el caso, a la cadena "verdadero".

Ejemplo: Boolean.valueOf("True") devuelve true.

Ejemplo: Boolean.valueOf("yes") devuelve falso.

A partir de java 1.5 también hay Boolean.parseBoolean(String s) que devuelve el tipo primitivo boolean en lugar del tipo Boolean en caja para ahorrar algunos ciclos de CPU en la mayoría de los casos.

+0

si 'strFlag' contiene un valor falso? – Mdhar9e

+1

entonces el 'boolFlag' es falso.Dado que 'boolean' solo puede ser verdadero o falso, basta con verificar uno de ellos, dependiendo de lo que debería ser el" predeterminado ". Para la envoltura 'Boolean' tendrías razón, ya que esa podría convertirse en' null'. – devsnd

+1

O simplemente 'boolFlag booleano = "true" .equalsIgnoreCase (strFlag);' – Jesper

3

Puede utilizar

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

Si strFlag fuera 'nulo', esto le daría una' NullPointerException'. – devsnd

+0

gracias por la corrección –

10

Uso Boolean.valueOf

boolean boolFlag = Boolean.valueOf(strFlag); 

Este método devuelve un valor booleano con un valor representado por la cadena especificada. El booleano devuelto representa el valor verdadero si el argumento de cadena no es nulo y es igual, ignorando el caso, a la cadena "verdadero".

+0

ok ... intentaré con esto. Parece que funciona. – Mdhar9e

+0

Usar los complementos es una mejor opción que mi solución. 1 – devsnd

+0

si está almacenando en un primitivo, a continuación, analizar es muy, muy ligeramente más rápido (ya que evita unboxing), pero que el tiempo va a quedar eclipsados ​​por el tiempo de análisis de todos modos, así que es un no-tema. – user439407

4

Boolean.getBoolean pruebas para ver si la propiedad sistema dado es cierto, que desea Boolean.parseBoolean

+0

puedes soltar un trozo de código. – Mdhar9e

3

tratar de utilizar Boolean.valueOf(strFlag)

3

Uso Boolean.parseBoolean

boolean boolFlag = Boolean.parseBoolean(strFlag); 

Este método devuelve un valor lógico primitiva tipo. Funciona igual que Boolean.valueOf, sin el costo de unboxing.