首先,对这个非常基本的问题表示歉意。我对stackoverflow还是比较陌生,但是对此我挠头了,希望能有所启发。
好的,所以今天在工作中,我和我的同事的代码经过同行审查,并被要求替换。
Boolean isOpen;
*some processing that involves altering the value of isOpen*
if (!isOpen){
...
}
Run Code Online (Sandbox Code Playgroud)
有了这个..
if (Objects.equals(Boolean.FALSE, isOpen)){
...
}
Run Code Online (Sandbox Code Playgroud)
我知道这两种实现都是正确的,并且产生相同的结果。我也知道使用Boolean对象包装器的后果。
我没有得到的是在这种情况下使用NOT运算符和Objects.equals()之间的区别。我知道在运行时isOpen它将被拆箱。两者仍然容易受到影响,有NullPointerException什么区别?这有点超出了逻辑运算符的目的。