从您的评论中可以看出,您似乎正在寻找使用包装类的“最佳实践”。但实际上没有任何最佳实践,因为从一开始就使用这个类是一个坏主意。使用对象包装器的唯一原因是在你绝对必须的情况下(例如,当使用泛型时,即存储在 a 或类似的地方)。使用对象包装器没有优点,也有很多缺点,最值得注意的是,它打开了你的大门。Boolean
boolean
HashMap<String, Boolean>
NullPointerException
对于布尔值,是否使用“!”而不是 .equals() 是否重要?
这两种技术都容易受到 ,所以在这方面并不重要。在第一种情况下,将取消装箱到其各自的值中,并像往常一样进行比较。在第二种方案中,您将从该类中调用一个方法,如下所示:NullPointerException
Boolean
boolean
Boolean
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
无论哪种方式,结果都是一样的。
如果使用 .equals(false) 来检查布尔检查器的值,这有关系吗?
根据上述内容,没有。
第二个问题:布尔值的处理方式是否应该与布尔值不同?
如果绝对必须使用该类,请在执行任何比较之前始终进行检查。例如,Boolean
null
Map<String, Boolean> map = new HashMap<String, Boolean>();
//...stuff to populate the Map
Boolean value = map.get("someKey");
if(value != null && value) {
//do stuff
}
这将起作用,因为Java会缩短条件评估。您还可以使用三元运算符。
boolean easyToUseValue = value != null ? value : false;
但说真的...只需使用基元类型,除非您被迫不这样做。