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()方法: 比较两个枚举类对象的引用。

枚举练习

推荐阅读更多精彩内容

  • 嵌套类和内部类 大部分时候,类被定义成一个独立的程序单元。在某些情况下,也会把一个类放在另一个类的内部定义,这个定...
    凌寒天下独自舞阅读 140评论 0 0
  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 3,315评论 0 16
  • 「有人说,你能想象出比一个人吃火锅更孤独,更寂寞的状态吗?要我说,我们每个人真的要学会自己认认真真的吃一顿火锅。最...
    郑在践行阅读 244评论 2 0
  • 在家爸爸是那种不管看不看电视但总爱开着电视,所以在武汉也是一样,但这样的事,对皮和犇来说不是件好事,一边玩玩具,一...
    郭玲_f6de阅读 46评论 0 1
  • 1. 转眼间,离开部队已经快三年了,可是每当逢年过节,总会想起那里的点滴,仿佛近在眼前。比如明天是中秋节,我又想你...
    邓八一的麻麻阅读 165评论 2 2