Object.equals(Boolean,Boolean)与逻辑运算符(Java)

时间:2019-09-20 07:29:48

标签: java object boolean boolean-expression boolean-operations

首先,对这个非常基本的问题表示歉意。我对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的影响,有什么区别?有点超出了逻辑运算符的目的。

1 个答案:

答案 0 :(得分:8)

static类中没有equals Object方法。

您可能是说Objects.equals()。当Objects.equals(Boolean.FALSE, isOpen)!isOpen时,使用NullPointerException代替isOpen的好处是避免使用null

也就是说,我希望将isOpenBoolean更改为boolean,并保持!isOpen的条件。