枚舉的理解
- 枚舉是一組常量的集合,可以理解:枚舉屬於一種特殊的類,里面包含一組有限的特定對象
枚舉定義的兩種方式(自定義枚舉和enum關鍵字枚舉)
第一種枚舉的自定義的實現步驟和注意事項
- 不要提供Setxxx方法,因為枚舉對象值通常為只讀
- 對枚舉對象的屬性使用:public+final+static修飾符
- 枚舉對象名通常使用全部大寫,常量命名規范
- 枚舉對象根據需要,也可以有多個屬性
- 在本類的內部創建一組本類實例對象
- 案例
public class ad { public static void main(String[] args) { //打印枚舉的單個對象實例 System.out.println(GRY.GREEN); } //自定義枚舉 public static class GRY { //創建多個枚舉對象的實例 public final static GRY GREEN = new GRY("1","綠燈"); public final static GRY RED = new GRY("1","紅燈"); public final static GRY YELLO = new GRY("1","黃燈"); private String type; //類型 private String desc; //描述 //構造器私有化 private GRY(String type, String desc) { this.type = type; this.desc = desc; } //只給getxx方法 不要set 方法,因為set方法可以修改 public String getType() { return type; } public String getDesc() { return desc; } @Override public String toString() { return type + "\n"+ desc ; } } }
Enum關鍵字定義枚舉
- 使用關鍵字enum來替代class
- 用常量名.(實慘列表)在類內部的第一行來定義
- 如果有多個常量(對象)中間用,號隔空
- 如果使用enum來實現枚舉,使用,號隔開
- 舉例
class Weather { public static void main(String[] args) { //打印自定義枚舉常量 System.out.println(Season.SPRING); System.out.println(Season.WINTER); System.out.println(Season.AUTUMN); System.out.println(Season.SUMMER); } enum Season { //如果使用 enum 來實現枚舉,要求將定義常量對象,寫在前面 // 如果我們使用的是無參構造器,創建常量對象,則可以省略 () SPRING("春天", "溫暖"), WINTER("冬天", "寒冷"), AUTUMN("秋天", "涼爽"), SUMMER("夏天", "炎熱"); private String name; private String desc;//描述 private Season() {//無參構造器 } private Season(String name, String desc) {//有參構造器 並私有化 this.name = name; this.desc = desc; } public String getName() { return name; } public String getDesc() { return desc; } @Override public String toString() { return name + "\t" + desc ; } } }
enum關鍵字的注意事項
- 當enum關鍵字開發一個枚舉類時,默認會繼承enum類,這個類是一個final類,不能再被繼承
- 如果我們使用是無參構造器,則可以直接寫常量名,小括號可以省略
- 枚舉對象必須放在枚舉的首行
- 使用enum關鍵字后,不能使用其他類,因為enum會隱式繼承Enum
- 枚舉類型對象之間的值比較式可以用==,直接比較不用equlas