Java基礎 枚舉類 Enum關鍵字 自定義枚舉類

/**
 * 枚舉類:類的對象是有限個的,確定的。那麼就可以使用枚舉類。
 * 例如:定義一個Sex類,它的實例對象只有Man和Woman。
 *      定義一個Week類,它的實例對象有Monday,Tuesday..Sunday。
 *
 * 在jdk1.5之前,我們需要自定義枚舉類
 * 在jdk1.5之後,使用enum關鍵字來定義枚舉類。
 *
 * 自定義枚舉類
 */
public class SexEnum {

    // 1.定義對象的屬性,因爲是枚舉類,所以對象的屬性都應該確定的,不可以被修改的,所以使用final關鍵字。
    private final String sexName;
    private final String sexDesc;

    // 2.枚舉類的每個對象的屬性值都不相同,所以需要在構造方法中初始化每個屬性,
    // 此構造方法需要使用private關鍵字修飾,避免暴露讓外界訪問。如果別人可
    // 以隨意構造枚舉類的對象,那麼枚舉類的對象就無法滿足 有限個的,確定的 條件。
    private SexEnum(String sexName, String sexDesc) {
        this.sexName = sexName;
        this.sexDesc = sexDesc;
    }

    // 3.提供當前枚舉類的多個對象,因爲提供給外界訪問,所以使用public權限修飾符。
    // 因爲枚舉類的對象是確定的,有限個的,所以使用static final將它們定義爲常量。
    public static final SexEnum MAN = new SexEnum("man", "男性");
    public static final SexEnum WOMAN = new SexEnum("woman", "女性");

    // 4.提供公共的getter方法來讓外界獲取枚舉對象的屬性
    public String getSexName() {
        return sexName;
    }
    public String getSexDesc() {
        return sexDesc;
    }
}

class SexTest {
    public static void main(String[] args) {
        SexEnum sexEnum = SexEnum.MAN;
        System.out.println(sexEnum.getSexName());
        System.out.println(sexEnum.getSexDesc());
    }
}
/**
 * 使用enum關鍵字定義枚舉類。
 * 我們可以使用valuesOf和values方法來獲取枚舉類對象。
 */
public enum SexEnum {
    /*
    public static final SexEnum MAN = new SexEnum("man", "男性");
    public static final SexEnum WOMAN = new SexEnum("woman", "女性");
    對比自定義枚舉類,可以看到下面的步驟省略了public static final SexEnum 和 new SexEnum。這些都是固定寫法,所以可以省略。
    同時提供多個枚舉類對象的這一步操作必須放在最前面,多個對象使用,分割 使用;結束。
     */
    MAN("man", "男性"),
    WOMAN("woman", "女性");

    private final String sexName;
    private final String sexDesc;

    private SexEnum(String sexName, String sexDesc) {
        this.sexName = sexName;
        this.sexDesc = sexDesc;
    }

    public String getSexName() {
        return sexName;
    }

    public String getSexDesc() {
        return sexDesc;
    }
}

class SexTest {
    public static void main(String[] args) {
        // 使用valueOf根據對象名來獲取對象實例。
        SexEnum sexEnum = SexEnum.valueOf("WOMAN");
        System.out.println(sexEnum.getSexName());// woman
        System.out.println(sexEnum.getSexDesc());// 女性
        // 獲取枚舉類對象數組
        SexEnum[] sexEnums = SexEnum.values();
        for (SexEnum anEnum : sexEnums) {
            // ...
        }
    }
}

java.lang.Enum

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