Come convertire un oggetto stringa in un oggetto booleano?

Come convertire un oggetto "stringa" in un oggetto "booleano"?

Soluzione

Prova (a seconda del tipo di risultato che vuoi):

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

Vantaggio:

  • Boolean: questo non crea nuove istanze di Boolean, quindi le prestazioni sono migliori (e meno raccolta di spazzatura). Riutilizza le due istanze di Boolean.TRUE o Boolean.FALSE.
  • booleano: nessuna istanza è necessaria, si usa il tipo primitivo.

La documentazione ufficiale è nel Javadoc.


AGGIORNATO:

Si potrebbe anche usare l'autoboxing, ma ha un costo in termini di prestazioni.
Suggerisco di usarlo solo quando si dovrebbe lanciare da soli, non quando il lancio è evitabile.

Commentari (4)

Dovete fare attenzione quando usate Boolean.valueOf(string) o Boolean.parseBoolean(string). La ragione di questo è che i metodi restituiranno sempre false se la stringa non è uguale a "true" (il caso viene ignorato).

Per esempio:

Boolean.valueOf("YES") -> false

A causa di questo comportamento raccomanderei di aggiungere qualche meccanismo per assicurare che la stringa che dovrebbe essere tradotta in un booleano segua un formato specificato.

Per esempio:

if (string.equalsIgnoreCase("true") || string.equalsIgnoreCase("false")) {
    Boolean.valueOf(string)
    // do something   
} else {
    // throw some exception
}
Commentari (3)
Boolean b = Boolean.valueOf(string);

Il valore di b è vero se la stringa non è un null e uguale a true (ignorando il caso).

Commentari (0)