枚舉是一個被命名的整數常數的集合,用來宣告一組帶有標識符的常數。枚舉在曰常生活中很常見,例如一個人的性別只能是“男”或“女”,一周的星期只能是 7 天中的一個等。類似這種當一個變數有幾種固定可能的取值時,就可以將它定義為枚舉型別。
Java 枚舉類別使用enum 關鍵字來定義,各個常數使用逗號, 來分割,結尾使用分號;結束
enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 }
enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 } public class SeasonEnum { public static void main(String[] args) { System.out.println("请输入季节"+"\n"+"1、春天"+"\n"+"2、夏天"+"\n"+"3、秋天"+"\n"+"4、冬天"); Scanner scan =new Scanner(System.in); int seasons= scan.nextInt(); change(seasons); } private static void change(int seasons) { Season season=Season.spring; switch (seasons){ case 1: season=Season.spring; break; case 2: season=Season.summer; break; case 3: season=Season.autumn; break; case 4: season=Season.winter; break; } System.out.println(season); } }
enum 定義的枚舉類別預設繼承了java.lang.Enum 類,並實作了java.lang.Serializable 和java.lang.Comparable 兩個接口。
values(), ordinal() 和valueOf() 方法位於java.lang.Enum 類別中:
values( ) 方法可以將所有枚舉的成員以陣列形式傳回,也可以透過此方法取得枚舉類型的成員。
enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 } } public class SeasonEnum { public static void main(String[] args) { // 迭代季节 for (Season season : Season.values()) { System.out.println(season); } } }
結果:
ordinal()方法ordinal() 方法可以取得一個成員在枚舉中的索引位置。下面的範例建立一個包含 3 個成員的枚舉類型 Signal,然後呼叫 ordinal() 方法輸出成員及對應索引位置。
enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 } } public class SeasonEnum { public static void main(String[] args) { // 迭代季节 for (Season season : Season.values()) { // ordinal可以找到每个枚举常量的索引,就像数组索引一样。 System.out.println(season+" 索引为 "+season.ordinal()); } } }
結果:
# valueOf()方法valueOf()方法傳回指定字串值的枚舉常數enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 } } public class SeasonEnum { public static void main(String[] args) { // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException System.out.println(Season.valueOf("summer")); // System.out.println(Season.valueOf("summ")); } }結果 枚舉類別成員列舉跟普通類別一樣可以用自己的變數、方法和建構函數,建構函數只能使用private 存取修飾符,所以外部無法呼叫。 枚舉既可以包含具體方法,也可以包含抽象方法。如果枚舉類別具有抽象方法,則枚舉類別的每個實例都必須實現它。
enum Season{ spring,summer,autumn,winter; // 常量有 spring, summer, autumn,winter,分别表示春天,夏天,秋天,冬天,系统会自动添加 public static final 修饰 // 构造方法 private Season(){ System.out.println("Constructor called for :" +this.toString()); } public void SeasonInfo(){ System.out.println("spring"); } } } public class SeasonEnum { public static void main(String[] args) { Season season=Season.spring; season.SeasonInfo(); } }
以上是Java中的枚舉怎麼使用的詳細內容。更多資訊請關注PHP中文網其他相關文章!