首先,对这个非常基本的问题表示歉意。我对stackoverflow还是比较陌生,但是对此我挠头了,希望能有所启发。
好的,所以今天在工作中,我和我的同事的代码经过同行审查,并被要求替换。.
Boolean isOpen;
*some processing that involves altering the value of isOpen*
if (!isOpen){
...
}
与此。
if (Objects.equals(Boolean.FALSE, isOpen)){
...
}
我知道这两种实现都是正确的,并且产生相同的结果。我也知道使用Boolean
对象包装器的后果。
在这种情况下,我不明白使用NOT运算符和Objects.equals()之间的区别。我知道在运行时isOpen
将被拆箱。两者仍然容易受到NullPointerException
的影响,有什么区别?有点超出了逻辑运算符的目的。
答案 0 :(得分:8)
在static
类中没有equals
Object
方法。
您可能是说Objects.equals()
。当Objects.equals(Boolean.FALSE, isOpen)
为!isOpen
时,使用NullPointerException
代替isOpen
的好处是避免使用null
。
也就是说,我希望将isOpen
从Boolean
更改为boolean
,并保持!isOpen
的条件。