Boolean.parseBoolean(“1”) = false...?

2022-08-31 12:07:18

抱歉是痛苦...我有:HashMap<String, String> o

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

还。。。

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

我猜那不接受标准?....parseBoolean0 = false1 = true

我是否做错了什么,或者我必须将代码包装在:

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

谢谢


答案 1

它只接受一个字符串值 来表示布尔值 。你能做的最好的事情就是"true"true

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

或者,如果实际上代表一个“实体”,我认为Javabean要好得多。或者,如果它代表配置设置,您可能需要查看Apache Commons ConfigurationMap


答案 2

我有一个小的效用函数,可以将所有可能的值转换为布尔值。

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;
}

推荐