81 votes

Boolean.parseBoolean ("1") = false ...?

désolé d'être une douleur ... j'ai: HashMap<String, String> o

 o.get('uses_votes'); // "1"
 

Encore...

 Boolean.parseBoolean(o.get('uses_votes')); // "false"
 

Je suppose que ....parseBoolean n'accepte pas la norme 0 = false 1 = true ?

Est-ce que je fais quelque chose de mal ou devrai-je envelopper mon code dans:

 boolean uses_votes = false;
if(o.get('uses_votes').equals("1")) {
    uses_votes = true;
}
 

Merci

95voto

BalusC Points 498232

Il accepte uniquement une valeur de chaîne de "true" pour représenter le booléen true . Le mieux que vous puissiez faire est

 boolean uses_votes = "1".equals(o.get("uses_votes"));
 

Ou si le Map représente réellement un "droit", je pense qu'un Javabéen est bien meilleur. Ou, s’il s’agit de paramètres de configuration, consultez la configuration d’Apache Commons .

30voto

Saqib Points 153

J'ai une petite fonction utilitaire pour convertir toutes les valeurs possibles en booléens.

 private boolean convertToBoolean(String value) {
    boolean returnValue = false;
    if ("1".equalsIgnoreCase(value) || "yes".equalsIgnoreCase(value) || 
        "true".equalsIgnoreCase(value) || "on".equalsIgnoreCase(value))
        returnValue = true;
    return returnValue;
}
 

14voto

mellamokb Points 34067

Selon la documentation (c'est moi qui souligne):

Analyse l'argument de chaîne comme un booléen. Le booléen renvoyé représente la valeur true si l'argument de chaîne n'est pas null et égal à la chaîne "true", en ignorant la casse .

10voto

Brendan Long Points 24372

Si vous essayez d'obtenir le comportement de C ( 0 == false et tout le reste est true ), vous pouvez faire ceci:

 boolean uses_votes = Integer.parseInt(o.get("uses_votes")) != 0;
 

2voto

kommradHomer Points 1601

Comme note,
pour ceux qui ont besoin d'avoir la valeur null pour des choses autres que les chaînes "true" ou "false", vous pouvez utiliser la fonction ci-dessous

 public Boolean tryParseBoolean(String inputBoolean)
{    
    if(!inputBoolean.equals("true")&&!inputBoolean.equals("false")) return null;
    return Boolean.valueOf(inputBoolean);
}
 

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