我很惊讶地知道 getBoolean() 和 valueOf() 方法为同一个输入字符串返回不同的结果 .
getBoolean()
valueOf()
我试图将 "true" 传递给这两种方法 . 但 getBoolean() 给了我错误的输出,而 valueOf() 给了我正确的输出,这是真的 . 为什么?
"true"
Boolean.getBoolean 必须是java中放置最差的方法 . 其中一个大型WTF .
Boolean.getBoolean
为什么不把它放在 System 或 Properties 或其他什么?
System
Properties
所以回答你的问题 - 是的,这是一个非常令人困惑的事情,你只需点击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; }
我最近在使用Boolean.getBoolean()时也发现了这个问题 . 另外,如果要进行空检查,可以使用Boolean.parseBoolean,如果为null,则返回false
The API-documentation is your friend.
当且仅当参数指定的系统属性存在且等于字符串“true”时,才返回true .
如果字符串参数不为null且等于忽略大小写,则返回的布尔值表示值true为字符串“true” .
getBoolean的javadoc清楚地表明它搜索系统属性 . 传递给它的值是系统属性的名称,而不是"true"或"false"字符串 .
例如,`var b = Boolean.getBoolean(“some.property”);
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); } }
5 回答
Boolean.getBoolean
必须是java中放置最差的方法 . 其中一个大型WTF .为什么不把它放在
System
或Properties
或其他什么?所以回答你的问题 - 是的,这是一个非常令人困惑的事情,你只需点击IDE中的方法来查看代码或阅读javadoc .
这是源代码:
我最近在使用Boolean.getBoolean()时也发现了这个问题 . 另外,如果要进行空检查,可以使用Boolean.parseBoolean,如果为null,则返回false
The API-documentation is your friend.
getBoolean的javadoc清楚地表明它搜索系统属性 . 传递给它的值是系统属性的名称,而不是"true"或"false"字符串 .
例如,`var b = Boolean.getBoolean(“some.property”);