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

Object.equals(Boolean, Boolean) vs Logical Operators (Java)

首先,对这个非常基本的问题表示歉意。我是 Whosebug 的新手,但我正在为此摸不着头脑,想要一些启发。

好的,所以今天在工作中,我和我同事的代码经过了同行评审,并被告知要替换它..

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 的影响,所以有什么区别?它有点违背了逻辑运算符的目的。

static equals Object class 中没有方法。

您的意思可能是 Objects.equals()。使用 Objects.equals(Boolean.FALSE, isOpen) 而不是 !isOpen 的好处是当 isOpennull.

时避免 NullPointerException

也就是说,如果可能的话,我宁愿将 isOpenBoolean 更改为 boolean,并保持 !isOpen 条件。