一、枚举类的使用

1.枚举类的对象只有有限个,确定的

例如:星期:Monday(星期一)、......、Sunday(星期天)

性别:Man(男)、Woman(女)

等都可以作为枚举类的对象。

二、枚举类的实现

枚举类的实现有两种方式:

jdk1.5之前需要自定义枚举类

jdk1.5之后,enum关键字用于定义枚举类

下面分别介绍这两种方式:

2.1、自定义枚举类

1.私有化类的构造器,保证不能在类的外部创建其对象

2.在类的内部创建枚举类的实例,声明为:public static final

3.对象若有实例变量,声明为private final ,并在构造器中初始化

class Season{
    //3.对象如果有实例变量,应该声明为private final,并在构造器中初始化
    private final String SEASONNAME;
    //1.私有化类的构造器,保证不能在类的外部创建其对象
    private Season(String seasonname){
        this.SEASONNAME =  seasonname;
    }
    //2.私有化类的构造器,保证不能在类的外部创建其对象
    public static final Season SPRING = new Season("春天");
    public static final Season SUMMER = new Season("夏天");
    public static final Season SUTUMN = new Season("秋天");
    public static final Season WIMTER = new Season("冬天");
}

2.2、使用menu定义枚举类

enum SeasonEnum {
//必须在枚举类的第一行声明枚举类对象,并且枚举类对象之间以“,”分隔,以“;”结尾
    SPRING("春天"),
    SUMMER("夏天"),
    AUTUMN("秋天"),
    WINTER("冬天");
    private final String seasonName;
//构造器只能使用private权限修饰符
    private SeasonEnum(String seasonName) {
        this.seasonName = seasonName;
}

三、枚举类的常用方法:

  • values():返回枚举类型的对象数组。即可以遍历所有的枚举值。
  • valuesOf():把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象的名字。如果不是,会有运行时异常:IllegalArgumentException。
  • toString():返回当前枚举类对象常量的名称
public class SeasonTest1 {
    public static void main(String[] args) {
        SeasonEnum summer = SeasonEnum.SUMMER;
        //toString():
        System.out.println(summer.toString()); //SUMMER
        //values():
        SeasonEnum[] values = summer.values();
        for (int i = 0; i < values.length; i++) {
            System.out.println(values[i]);
        } //SPRING、SUMMER、SUTUMN、WINTER
        //valueof()
        System.out.println(summer.valueOf("WINTER"));//WINTER

    }
}