亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我將枚舉構造函數設置為私有或默認時,會有什么區別?

當我將枚舉構造函數設置為私有或默認時,會有什么區別?

一只萌萌小番薯 2023-08-09 17:14:19
首先,對這個非?;镜膯栴}表示歉意。我對 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,則不是。既不被允許,publicprotected不被允許。枚舉構造函數始終是private.

8.9.2.?枚舉體聲明

如果枚舉聲明中的構造函數聲明是公共的或受保護的(第 6.6 節),則會出現編譯時錯誤。


查看完整回答
反對 回復 2023-08-09
?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

枚舉構造函數只能是私有構造函數。

在枚舉聲明中,沒有訪問修飾符的構造函數聲明是私有的。

...

如果枚舉聲明中的構造函數聲明是公共的或受保護的,則會出現編譯時錯誤。

沒有理由讓它成為私有的:您無法手動創建枚舉的新實例(這有點是枚舉的要點)。

如果您想要可以創建實例的東西,請使用常規類。


查看完整回答
反對 回復 2023-08-09
  • 2 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號