Java學習筆記-枚舉類型,java學習筆記枚舉
枚舉類型
枚舉類型就是預先定義的一類常量集合,如一周的時間、水果的類型等。需要注意的幾點內容如下:
- 定義枚舉類時,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.Color10 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