好吧,今天在工作中,我和我同事的代碼經過了同行評審,并被告知要替換它。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
提交
取消