一文帶你入門Java的【枚舉類】

一、什麼是枚舉類

枚舉類型用於聲明一組命名的常數,當一個變量只有幾種已知的取值時,可以將它定義爲枚舉類型。

例如:

  • 每星期的星期一到星期日
  • 每月的一月到十二月
  • 四季的春夏秋冬

二、自定義枚舉類

創建步驟

  1. 聲明對象的屬性
  2. 提供私有構造函數
  3. 提供當前枚舉類中的對象
  4. 提供Get方法/重寫toString()
/**
 * 自定義枚舉類
 */
class Week {
    // 1. 聲明Week對象屬性
    private final String weekName;
    private final String color;

    //2. 提供私有構造函數
    private Week(String weekName, String color) {
        this.weekName = weekName;
        this.color = color;
    }

    //3. 提供當前枚舉類中的對象
    public static final Week Monday = new Week("星期一", "黑色");
    public static final Week Tuesday = new Week("星期二", "綠色");
    public static final Week Wednesday = new Week("星期三", "黃色");
    public static final Week Thursday = new Week("星期四", "藍色");
    public static final Week Friday = new Week("星期五", "紅色");
    public static final Week Saturday = new Week("星期六", "青色");
    public static final Week Sunday = new Week("星期日", "白色");

    //4.提供get方法獲取枚舉類的屬性
    public String getWeekName() {
        return weekName;
    }
    public String getColor() {
        return color;
    }
    //5. 重寫toString()
    @Override public String toString() {
        return "Week{weekName='" + weekName + ", color='" + color + "'}";
    }
}

三、使用enum關鍵字枚舉類

創建步驟

  1. 提供當前枚舉類對象,多個對象之間用 ‘,’ 隔開,末尾用 ‘;’ 結束
  2. 聲明對象的屬性
  3. 提供構造函數
  4. 提供當前枚舉類中的對象
  5. 提供Get方法/重寫toString()
/**
 * 使用enum關鍵字枚舉類
 */
enum EWeek {
    // 1. 提供當前枚舉類對象,多個對象之間用 ',' 隔開,末尾用 ';' 結束
    Monday("星期一", "黑色"),
    Tuesday("星期二", "綠色"),
    Wednesday("星期三", "黃色"),
    Thursday("星期四", "藍色"),
    Friday("星期五", "紅色"),
    Saturday("星期六", "青色"),
    Sunday("星期日", "白色");

    // 2. 聲明Week對象屬性
    private final String weekName;
    private final String color;

    // 3. 構造函數,給對象賦值
    EWeek(String weekName, String color) {
        this.weekName = weekName;
        this.color = color;
    }

    //4.獲取枚舉類的屬性
    public String getWeekName() {
        return weekName;
    }
    public String getColor() {
        return color;
    }
    //5. 重寫toString()
    @Override public String toString() {
        return "Week{weekName='" + weekName + ", color='" + color + "'}";
    }
}

四、枚舉類常用方法

  1. toString():輸出對象
  2. values():返回所的枚舉類對象構成的數組
  3. valueOf(String objName):返回枚舉類中對象名是objName的對象。
public class EnumDemo {
    public static void main(String[] args) {
        EWeek week = EWeek.Monday;
        //1. 調用toString
        System.out.println("--------------toString()-------------");
        System.out.println(week);
        //2. 返回所的枚舉類對象構成的數組
        System.out.println("------------values()---------------");
        EWeek[] weeks = EWeek.values();
        System.out.println(Arrays.toString(weeks));
        System.out.println("-------------valueOf(String objName)--------------");
        //3. valueOf(String objName):返回枚舉類中對象名是objName的對象。
        EWeek week1 = EWeek.valueOf("Monday");
        System.out.println(week1);
        //如果沒objName的枚舉類對象,則拋異常:IllegalArgumentException
        System.out.println("--------------測試無objName對象-------------");
        EWeek week2 = EWeek.valueOf("aaaa");
    }
}

輸出結果

在這裏插入圖片描述

五、讓enum枚舉類對象分別實現接口

public class EnumInterfaceDemo {
    public static void main(String[] args) {
        EWeeks eWeeks = EWeeks.Monday;
        eWeeks.show();
    }
}

interface Info{
    void show();
}

/**
 * 使用enum關鍵字枚舉類
 */
enum EWeeks implements Info{
    // 1. 提供當前枚舉類對象,多個對象之間用 ',' 隔開,末尾用 ';' 結束
    Monday("星期一", "黑色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Tuesday("星期二", "綠色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Wednesday("星期三", "黃色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Thursday("星期四", "藍色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Friday("星期五", "紅色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Saturday("星期六", "青色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    },
    Sunday("星期日", "白色"){
        @Override public void show() {
            System.out.println(this.getWeekName() + " 是 " + this.getColor());
        }
    };

    // 2. 聲明Week對象屬性
    private final String weekName;
    private final String color;

    // 3. 構造函數,給對象賦值
    EWeeks(String weekName, String color) {
        this.weekName = weekName;
        this.color = color;
    }

    //4.獲取枚舉類的屬性
    public String getWeekName() {
        return weekName;
    }
    public String getColor() {
        return color;
    }
    //5. 重寫toString()
    @Override public String toString() {
        return "Week{weekName='" + weekName + ", color='" + color + "'}";
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章