枚舉類型 枚舉類型就是預先定義的一類常量集合,如一周的時間、水果的類型等。需要註意的幾點內容如下: 定義枚舉類時,Java預設繼承java.lang.Enum,所以定義的枚舉類不能繼承其他類型; 枚舉類中可以包含成員變數、成員函數,但枚舉常量的定義再所有field和method之前,並以“;”結束; ...
枚舉類型
枚舉類型就是預先定義的一類常量集合,如一周的時間、水果的類型等。需要註意的幾點內容如下:
- 定義枚舉類時,Java預設繼承java.lang.Enum,所以定義的枚舉類不能繼承其他類型;
- 枚舉類中可以包含成員變數、成員函數,但枚舉常量的定義再所有field和method之前,並以“;”結束;
- 枚舉類的構造函數必須是package-private或private;
- 枚舉常量創建的時候都是將值傳遞到構造函數進行構建的;
- 由於枚舉類繼承Enum類,預設具有name()(獲得枚舉常量名)、values()(獲得枚舉常量數組)、valueOf(String arg)(將arg轉為枚舉常量)、ordinal()(聲明順序,由0開始)、getClass()、getDeclaringClass()
實例:
1 package enumtest; 2 3 public enum Color { 4 GREEN(2,"綠色"), 5 RED(3, "紅色"), 6 BLUE(5, "藍色"); 7 8 private int num; 9 private String desc; 10 11 Color(int num, String desc) { 12 this.num = num; 13 this.desc = desc; 14 } 15 16 public int getNum() { 17 return this.num; 18 } 19 20 public String getDesc() { 21 return this.desc; 22 } 23 24 public static void main(String[] args) { 25 for (Color color : Color.values()) { 26 System.out.println(color+"---"+color.num+"---"+color.desc); 27 } 28 for (Color color : Color.values()) { 29 System.out.println(color.name()); 30 } 31 System.out.println(Color.valueOf("GREEN").desc); 32 System.out.println(Color.GREEN.ordinal()); 33 System.out.println(Color.GREEN.getClass()); 34 System.out.println(Color.GREEN.getDeclaringClass()); 35 } 36 }
輸出結果:
1 GREEN---2---綠色 2 RED---3---紅色 3 BLUE---5---藍色 4 GREEN 5 RED 6 BLUE 7 綠色 8 0 9 class enumtest.Color 10 class enumtest.Color
另外,在集合中還存在java.util.EnumSet<E extends Enum<E>>和java.util.EnumMap<K extends Enum<K>,V>,其中EnumSet可存儲不重覆的枚舉常量,EnumMap的KEY為某枚舉類型,它們的存儲類型由泛型聲明決定。
參考:
https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html