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
的好处是当 isOpen
是 null
.
时避免 NullPointerException
也就是说,如果可能的话,我宁愿将 isOpen
从 Boolean
更改为 boolean
,并保持 !isOpen
条件。
首先,对这个非常基本的问题表示歉意。我是 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
的好处是当 isOpen
是 null
.
NullPointerException
也就是说,如果可能的话,我宁愿将 isOpen
从 Boolean
更改为 boolean
,并保持 !isOpen
条件。