好吧,今天在工作中,我和我同事的代码经过了同行评审,并被告知要替换它。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,那么有什么区别呢?它有点超越了逻辑运算符的目的。
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
课堂上没有static
equals
方法Object
。
你可能是说Objects.equals()
。Objects.equals(Boolean.FALSE, isOpen)
使用not的好处!isOpen
是可以避免NullPointerException
when isOpen
is null
。
也就是说,如果可能的话,我宁愿isOpen
从Boolean
改为,并保持这个状态。boolean
!isOpen
添加回答
举报
0/150
提交
取消