首先,對這個非?;镜膯栴}表示歉意。我對 stackoverflow 還很陌生,但我對此感到摸不著頭腦,希望得到一些啟發。好吧,今天在工作中,我和我同事的代碼經過了同行評審,并被告知要替換它。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,那么有什么區別呢?它有點超越了邏輯運算符的目的。
2 回答

楊魅力
TA貢獻1811條經驗 獲得超6個贊
8.9.2.?枚舉體聲明
在枚舉聲明中,沒有訪問修飾符的構造函數聲明是私有的。
除了你需要多寫一個單詞之外,這沒有任何區別。
我看到開發人員將private
其變得更加明確(以強調不能在枚舉之外使用枚舉構造函數的事實)。我覺得沒有必要。
如果我不寫
private
枚舉的構造函數,它會使其默認嗎?
如果你說的“默認”是指private
,是的。
如果“默認”是指package-private,則不是。既不被允許,public
也protected
不被允許。枚舉構造函數始終是private
.
8.9.2.?枚舉體聲明
如果枚舉聲明中的構造函數聲明是公共的或受保護的(第 6.6 節),則會出現編譯時錯誤。

jeck貓
TA貢獻1909條經驗 獲得超7個贊
枚舉構造函數只能是私有構造函數。
在枚舉聲明中,沒有訪問修飾符的構造函數聲明是私有的。
...
如果枚舉聲明中的構造函數聲明是公共的或受保護的,則會出現編譯時錯誤。
沒有理由讓它成為私有的:您無法手動創建枚舉的新實例(這有點是枚舉的要點)。
如果您想要可以創建實例的東西,請使用常規類。
添加回答
舉報
0/150
提交
取消