- 19.1 enum特性
enum實現Serializable接口,自動添加了equals和hashCode方法
方法名稱 | 含義 |
---|---|
enums.values() | 返回類元素的數組 |
enum.ordinal() | 返回次序的int值 |
enum.getDeclaringClass() | 全類名 |
Enum.valueOf() | 根據名字返回實例 |
- 19.1.1 支持靜態導入
- 19.2 enum類可以作爲一個正常的類
- enum實例必須最先定義
- 構造函數默認是private,可以省略,不能爲別的,只能內部調用
- 19.2.1可以覆蓋修改toString方法
- 19.3switch中使用
- case中可以直接寫元素,不用類名來引用
- 在Java7中添加了對String的支持,char是ascill碼,String是hashCode加equals安全檢查
- 19.4 values()方法是由編譯器插入到enum定義中的靜態方法,Enum中沒有,Class中有一個getEnumConstants()方法可以用來獲取enum中的實例,和values()方法結果相同
- 19.5 enum是繼承至Enum中的,所以不能再繼承
- 19.6 enum與泛型結合使用,泛型庫,隨機選取
- 19.7 枚舉不能繼承,但是可以同時繼承一個接口,以達到泛型向上轉型,統一類型
- 19.8EnumSet抽象類
方法 | 含義 |
---|---|
EnumSet.noneOf(xxx.class) | 生成一個空的EnumSet< xxx > |
EnumSet.of(xxx…) | 這些元素的集合 |
EnumSet.allOf(xxx.class) | 這個類所有實例的集合 |
EnumSet.range(a,b) | 從[a,b]元素的集合 |
EnumSet.complementOf(enumset<>) | 反轉這個,有的變無,無中生有 |
- 19.9EnumMap 鍵值必須來自一個enum,使用和一般Map相似
- 19.10enum的元素可以實現本類中的抽象方法或者覆蓋一般的方法
- 19.10.1利用enum設計責任鏈模式,因爲可以重載接口,所以用values方法獲取所有實例,以此調用接口方法
- 19.10.2//TODO