首页 文章

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

提问于
浏览
39

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

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

5 回答

  • 0

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

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

  • 0

    The API-documentation is your friend.

    当且仅当参数指定的系统属性存在且等于字符串“true”时,才返回true .

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

  • 5

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

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

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

相关问题