Boolean类的getBoolean(String str)和valueOf(String str)给出不同的输出

时间:2011-04-07 12:26:45

标签: java boolean

我很惊讶地知道getBoolean()valueOf()方法会为同一输入字符串返回不同的结果。

我试图将"true"传递给这两种方法。但是getBoolean()给了我错误的输出,而valueOf()给了我正确的输出,这是真的。为什么呢?

5 个答案:

答案 0 :(得分:83)

The API-documentation is your friend.


  • Boolean.valueOf可能就是你要找的东西:

      

    如果字符串参数不为null且等于忽略大小写,则返回的布尔值表示值true为字符串“true”。

答案 1 :(得分:5)

getBoolean的javadoc清楚地表明它搜索系统属性。传递给它的值是系统属性的名称,而不是“true”或“false”字符串。

例如,`var b = Boolean.getBoolean(“some.property”);

答案 2 :(得分:1)

Boolean.getBoolean必须是Java中最差的方法。最大的WTF之一。

为什么不将它放在SystemProperties或其他任何东西中?

所以要回答您的问题-是的,这是一件非常令人困惑的事情,您可以单击IDE中的方法以查看代码或阅读javadoc。

这是源代码:

 public static boolean getBoolean(String name) {
        boolean result = false;
        try {
            result = toBoolean(System.getProperty(name));
        } catch (IllegalArgumentException e) {
        } catch (NullPointerException e) {
        }
        return result;
    }

答案 3 :(得分:0)

我最近在使用Boolean.getBoolean()时也发现了这个问题。另外,如果你想进行空检查,你可以使用Boolean.parseBoolean,如果为空则返回false

答案 4 :(得分:0)

class Boo1
{    
    public static void main(String[] args)
    {    
       System.setProperty("true","true");
       System.setProperty("false","true");

       boolean d=Boolean.getBoolean("true");

       System.out.println(d);   
   }
}