¿Cómo convertir un objeto String en un objeto booleano?

Resuelto Suresh asked hace 15 años • 16 respuestas

¿ Cómo convertir Stringun objeto en Booleanobjeto?

Suresh avatar Oct 08 '09 23:10 Suresh
Aceptado

Pruebe (dependiendo del tipo de resultado que desee):

Boolean boolean1 = Boolean.valueOf("true");
boolean boolean2 = Boolean.parseBoolean("true");

Ventaja:

  • Booleano: esto no crea nuevas instancias de booleano, por lo que el rendimiento es mejor (y menos recolección de basura). Reutiliza las dos instancias de Boolean.TRUEo Boolean.FALSE.
  • booleano: no se necesita ninguna instancia, se utiliza el tipo primitivo.

La documentación oficial está en el Javadoc .


ACTUALIZADO:

También se podría utilizar el autoboxing, pero tiene un coste de rendimiento.
Sugiero usarlo sólo cuando tengas que lanzarte tú mismo, no cuando el yeso sea evitable.

KLE avatar Oct 08 '2009 16:10 KLE

Debes tener cuidado al usar Boolean.valueOf(string) o Boolean.parseBoolean(string) . La razón de esto es que los métodos siempre devolverán falso si la cadena no es igual a "verdadero" (se ignora el caso).

Por ejemplo:

Boolean.valueOf("YES") -> false

Debido a ese comportamiento, recomendaría agregar algún mecanismo para garantizar que la cadena que debe traducirse a booleano siga un formato específico.

Por ejemplo:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}
zlajo avatar Oct 08 '2009 16:10 zlajo
Boolean b = Boolean.valueOf(string);

El valor de bes verdadero si la cadena no es nula e igual a true(ignorando mayúsculas y minúsculas).

CJS avatar Oct 08 '2009 16:10 CJS

Además de la excelente respuesta de KLE, también podemos hacer algo más flexible:

boolean b = string.equalsIgnoreCase("true") || string.equalsIgnoreCase("t") || 
        string.equalsIgnoreCase("yes") || string.equalsIgnoreCase("y") || 
        string.equalsIgnoreCase("sure") || string.equalsIgnoreCase("aye") || 
        string.equalsIgnoreCase("oui") || string.equalsIgnoreCase("vrai");

(inspirado en la respuesta de zlajo... :-))

PhiLho avatar Oct 08 '2009 16:10 PhiLho