Think in Java總結 -- 19枚舉類型

  • 19.1 enum特性
    enum實現Serializable接口,自動添加了equals和hashCode方法
方法名稱 含義
enums.values() 返回類元素的數組
enum.ordinal() 返回次序的int值
enum.getDeclaringClass() 全類名
Enum.valueOf() 根據名字返回實例
  • 19.1.1 支持靜態導入
  • 19.2 enum類可以作爲一個正常的類
  1. enum實例必須最先定義
  2. 構造函數默認是private,可以省略,不能爲別的,只能內部調用
  • 19.2.1可以覆蓋修改toString方法
  • 19.3switch中使用
  1. case中可以直接寫元素,不用類名來引用
  2. 在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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章