Java高级特性-枚举

定义

An enum type is a special data type that enables for a variable to be a set of predefined constants.

枚举类型是一种特殊的数据类型,它使变量成为一组预定义的常量。

语法

public enum EnumName {
    ENUM_VALUES;
    variables;
    otherMethods;
    ....
}

例子

public enum Week {
    SUNDAY("星期日"), MONDAY("星期一"), TUESDAY("星期二"), WEDNESDAY("星期三"),
    THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六");
    
    private String day;
    
    Week(String day) {
        this.day = day;
    }
    
    public String getDay() {
        return day;
    }
    
    public void setDay(String day) {
        this.day = day;
    }
    
    @Override
    public String toString(){
        return day;
    }
}


注意

  1. 枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。

  2. 构造器只能使用 private 访问修饰符,所以无法从外部调用构造器,构造器只在构造枚举值时被调用。

  3. 所有的枚举值都是 public static final 的,且非抽象的枚举类不能再派生子类。

  4. 枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。列出这些实例(枚举值)时,系统会自动添加 public static final 修饰,无需程序员显式添加。

与普通类的区别

  1. 使用enum定义的枚举类默认继承了java.lang.Enum类
  2. 枚举类的构造器只能使用private,否则会报错
  3. 枚举类的每个实例必须在枚举类中显示的列出(,分隔 ;结尾) 列出的实例系统会自动添加public static final修饰
  4. 所有的枚举类都定义了一个values方法,该方法可以很方便的遍历所有的枚举值
  5. 枚举类对象的属性不能更改,所以要用private final修饰
  6. 枚举类不能继承其他类也不能被其他类继承。

常用方法:

  1. String name(): 返回此枚举实例的名称,即枚举值 。
  2. String toString(): 返回枚举值的名称,与 name 方法类似,更常用。
  3. static values(): 返回一个包含全部枚举值的数组,可以用来遍历所有枚举值。
  4. static valueOf(): 返回带指定名称的指定枚举类型的枚举常量,名称必须与在此类型中声明枚举常量所用的标识符完全匹配(不允许使用额外的空白字符)。这个方法与toString相对应,因此重写 toString() 方法,一定要重写 valueOf() 方法(我们可以重写 toString() 方法,但不能自己重写 valueOf() 方法,当我们重写 toString() 方法时,valueOf() 方法会自动重写,不用我们理会)。
  5. Switch() 的参数可以接受枚举。
  6. boolean equals()方法: 比较两个枚举类对象的引用。

枚举练习

你可能感兴趣的:(Java高级特性-枚举)