362 votes

Comment convertir un objet String en objet booléen?

Comment convertir un String object en Boolean object?

581voto

KLE Points 11711

Essayez (selon le type de résultat que vous voulez):

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

Avantage :

  • Booléen : ce n'est pas de créer de nouvelles instances de type Boolean, le rendement est meilleur (et moins de garbage collection). Il réutiliser les deux cas Boolean.TRUE ou Boolean.FALSE.
  • booléen : pas d'instance est nécessaire, vous devez utiliser le type de primitive.

La documentation officielle est la Javadoc.


Mise à JOUR :

L'autoboxing pourrait aussi être utilisé, mais il a un coût de performance.
Je suggère de l'utiliser uniquement quand vous pourriez avoir à jeter vous-même, et non pas quand le plâtre est évitable.

105voto

zlajo Points 1057

Vous devez être prudent lors de l'utilisation d' un Booléen.valueOf(string) ou Booléen.parseBoolean(chaîne de caractères). La raison pour cela est que les méthodes renverra toujours false si la Chaîne n'est pas égale à "true" (la casse est ignorée).

Par exemple:

Boolean.valueOf("YES") -> false

En raison de ce comportement que je recommande d'ajouter un mécanisme pour s'assurer que la chaîne de caractères qui doit être traduit en une valeur Booléenne suit un format spécifié.

Par exemple:

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

23voto

CJS Points 460
 Boolean b = Boolean.valueOf(string);
 

La valeur de b est true si la chaîne n'est pas nulle et égale à true (en ignorant la casse).

20voto

PhiLho Points 23458

En plus de l'excellente réponse de KLE, nous pouvons également faire quelque chose de plus 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");
 

(inspiré par la réponse de zlajo ... :-))

11voto

Zed Points 27408
boolean b = string.equalsIgnoreCase("true");

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X