枚舉
使用靜態常量的弊端java
- 安全性低,可接受枚舉外的值
- 可讀性,尤爲是打印日誌時
- 枚舉的本質就是一個類(在編譯時期轉換成對應final類的形式,繼承自java.lang.enum)
- 底層實現線程安全
- 反編譯展現的枚舉類型都是static類型的屬性,在類被加載後被初始化,當一個Java類第一次被真正使用到的時候靜態資源被初始化、Java類的加載和初始化過程都是線程安全的
public enum ColorEnum {
RED,GREEN,YELLOW
}
複製代碼
枚舉是實現單例的最好方式安全
- 寫法簡單
- 能夠防止反序列化從新建立對象
- 線程安全
- 惟一缺點: 枚舉類的建立對象方式必須使用相應的方法,協同開發時,其餘人並不必定知道
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
複製代碼