关于Java中Boolean函数的坑

今天做程序遇到一个Java的坑,感觉比较容易被踩,记录一下。

0x01 坑

这个坑是出在java.lang.Boolean,有一个函数是:

1
Boolean.getBoolean(String name)

这个函数看名字好像是获取name是某个值的布尔量,我把它错误地理解为了如果name是true所以返回true,如果不是则返回false。

但是我在实际的程序中却遇到了大麻烦,这个总是返回false,哪怕name是true也返回false。

我瞬间意识到了这个函数有问题,遂查看文档和其用法,发现这个函数充满了迷惑性。

0x02 用法

实际上这个函数的真实用法和其看上去的用法有很大不同,它的意思是如果可以通过System里面的getProperty访问到一个名字为name的参数,它的返回是true,反之返回的是false。

也就是说这个Boolean.getBoolean实际上是用来检测参数存不存在的,其对应的用法是:

1
2
3
System.setProperty("key", value);
Boolean.getBoolean("key"); //true
Boolean.getBoolean("true"); //false

0x03 避坑

正确用Java转换字符串到Boolean的方法是:

1
Boolean.parseBoolean(String s);

和其他类型是一样的。