以此为例(摘自 Java regex checker not working ):
while(!checker) {
matcher = pattern.matcher(number);
if(matcher.find())
checker = true;
else
year++;
}
如果使用 .equals(false)
来检查 Boolean checker
的值是否重要?
我知道有 这个 很相似。但是,显然问题涉及原始 boolean
而不是对象包装器 Boolean
;因此, .equals()
将不适用。
另外,应该 Boolean
的处理方式不同于 boolean
吗?
原文由 ylun.ca 发布,翻译遵循 CC BY-SA 4.0 许可协议
从您的评论来看,您似乎正在寻找使用
Boolean
包装类的“最佳实践”。但是确实 没有 任何最佳实践,因为一开始就使用这个类不是一个好主意。使用对象包装器的唯一原因是在您绝对 必须 的情况下(例如当使用 Generics 时,即,将boolean
存储在HashMap<String, Boolean>
等中)。使用对象包装器没有好处,也有很多缺点,最值得注意的是,它会让你打开NullPointerException
s。这两种技术都容易受到
NullPointerException
的影响,因此在这方面无关紧要。在第一种情况下,Boolean
将被 拆箱 到其各自的boolean
值中并正常进行比较。在第二种情况下,您从Boolean
类中调用一个方法, 如下 所示:无论哪种方式,结果都是一样的。
根据以上,没有。
如果您绝对 必须 使用
Boolean
类,请在执行任何比较之前始终检查null
。例如,这将起作用,因为 Java 短路了 条件评估。您还可以使用三元运算符。
但是说真的……只要使用原始类型,除非你被迫不这样做。