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

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