猿问

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

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


Boolean isOpen;

*some processing that involves altering the value of isOpen*

if (!isOpen){

...

}

有了这个..


if (Objects.equals(Boolean.FALSE, isOpen)){

...

}

我知道这两种实现都是正确的并且产生相同的结果。我也知道使用对象包装器的后果Boolean。


我不明白在这种情况下使用 NOT 运算符和 Objects.equals() 之间的区别。我知道在运行时isOpen将会被拆箱。两者都仍然容易受到a的影响NullPointerException,那么有什么区别呢?它有点超越了逻辑运算符的目的。


慕娘9325324
浏览 69回答 1
1回答

忽然笑

课堂上没有static equals方法Object。你可能是说Objects.equals()。Objects.equals(Boolean.FALSE, isOpen)使用not的好处!isOpen是可以避免NullPointerExceptionwhen isOpenis null。也就是说,如果可能的话,我宁愿isOpen从Boolean改为,并保持这个状态。boolean!isOpen
随时随地看视频慕课网APP

相关分类

Java
我要回答