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