所以我看了看周圍的谷歌和SO,我無法找到一個例子或解釋:enum
中static
final
方法的目的是什麼?enum中的靜態最終方法
我明白了什麼:
- 方法聲明
static
可以像函數/程序語言來訪問。 final
意味着你不能覆蓋它。無法更改參考。正如assylias指出的,評論static
也不能被覆蓋。enum
s不能被分類,解釋here。
那麼,有什麼的static
final
方法enum
S中的點,如果它永遠不會被覆蓋因爲不會有一個子類?
所以我看了看周圍的谷歌和SO,我無法找到一個例子或解釋:enum
中static
final
方法的目的是什麼?enum中的靜態最終方法
我明白了什麼:
static
可以像函數/程序語言來訪問。final
意味着你不能覆蓋它。無法更改參考。正如assylias指出的,評論static
也不能被覆蓋。enum
s不能被分類,解釋here。那麼,有什麼的static
final
方法enum
S中的點,如果它永遠不會被覆蓋因爲不會有一個子類?
通過制定最終的靜態方法,you prevent it from being hidden(只有實例方法可以被子類覆蓋)。
由於枚舉不能被子類化,所以靜態方法的最終是多餘的,但不禁止。
注意:從技術上講,每個枚舉常量具有一個類體implicitly defines an anonymous class that extends the enum。但由於inner classes may not declare static methods,靜態最終方法不能隱藏在這樣一個常量的類體中。
很容易明白爲什麼static
方法有意義,所以我想問題是關於final
修飾符。
final
這裏沒有任何用處,除了可能使代碼更容易閱讀,但不是太多。
它類似於interface
方法通常寫爲public void foo();
,即使接口成員總是公開的。
當你聲明枚舉的實例時,你可以重寫枚舉的方法,本質上枚舉實例被實現爲(或認爲)爲子類。 static
方法在任何情況下都不能被覆蓋,但OP中的含義和final
對於enum
是多餘的其他答案是錯誤的。
您不能添加靜態方法來枚舉常量。 – assylias
在Java中枚舉類型用於表示固定的一組常量並使其成爲static final只有一次幫助其初始化,單個副本在所有實例之間共享,訪問具有類名稱的變量並且最終它更像一個只讀
靜態方法在任何情況下都不能被覆蓋... – assylias
@Henry靜態方法也不能被覆蓋。 – biziclop
@ assylias我應該在第二點加上。 – wtsang02