2011-04-07 4 views
36

Me sorprende saber que el método getBoolean() y valueOf() arroja resultados diferentes para la misma cadena de entrada.getBoolean (String str) y valueOf (String str) de clase booleana da salida diferente

He intentado pasar el "true" a ambos métodos. Pero getBoolean() me da salida falsa, mientras que valueOf() me da la salida correcta que es verdadera. ¿Por qué?

+0

Relevante: http://marxsoftware.blogspot.com/2009/12/java-booleans- getboolean-useful-if-not.html –

+7

¿Qué idioma es este? Si es Java, tenga en cuenta que el argumento para 'getBoolean' no es una cadena que representa un valor booleano; es una cadena que nombra una propiedad del sistema cuyo valor se supone que es una cadena que representa un valor booleano. –

Respuesta

75

                                                                          The API-documentation is your friend.

  • Boolean.getBoolean probablemente no hace lo que usted cree:

    devuelve verdadero si y sólo si el system property nombrado por el argumento existe y es igual a la cadena "verdadero".


  • Boolean.valueOf es probablemente lo que estás buscando:

    devuelve el booleano representa el valor verdadero si el argumento de cadena no es nulo y es igual, ignorando el caso, a la cadena "verdadero".

5

El javadoc de getBoolean establecen claramente que busca en las propiedades del sistema. El valor que le pasa es el nombre de la propiedad del sistema, no una cadena "verdadera" o "falsa".

P. ej., Var var = Boolean.getBoolean ("some.property");

0

Yo también encontré este problema recientemente cuando uso Boolean.getBoolean(). Además, si usted quiere tener un nulo Compruebe que puede utilizar Boolean.parseBoolean que devolverá falso en el caso de los nulos

+0

Al cargar la propiedad del sistema usando Boolean.getBoolean ("property.name"), no hay necesidad de preocuparse por los nulos. La API habla claramente sobre eso. Esta API devuelve verdadero si y solo si la propiedad del sistema nombrada por el argumento existe y es igual a la cadena "verdadero" (sin distinción entre mayúsculas y minúsculas). De lo contrario, devuelve "falso". – HIREN011

0
class Boo1 
{  
    public static void main(String[] args) 
    {  
     System.setProperty("true","true"); 
     System.setProperty("false","true"); 

     boolean d=Boolean.getBoolean("true"); 

     System.out.println(d); 
    } 
} 
+7

Por favor, lea [respuesta] –

Cuestiones relacionadas