定义
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;
}
}
注意
-
枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器。
-
构造器只能使用 private 访问修饰符,所以无法从外部调用构造器,构造器只在构造枚举值时被调用。
-
所有的枚举值都是 public static final 的,且非抽象的枚举类不能再派生子类。
-
枚举类的所有实例(枚举值)必须在枚举类的第一行显式地列出,否则这个枚举类将永远不能产生实例。列出这些实例(枚举值)时,系统会自动添加 public static final 修饰,无需程序员显式添加。
与普通类的区别
- 使用enum定义的枚举类默认继承了java.lang.Enum类
- 枚举类的构造器只能使用private,否则会报错
- 枚举类的每个实例必须在枚举类中显示的列出(,分隔 ;结尾) 列出的实例系统会自动添加public static final修饰
- 所有的枚举类都定义了一个values方法,该方法可以很方便的遍历所有的枚举值
- 枚举类对象的属性不能更改,所以要用private final修饰
- 枚举类不能继承其他类也不能被其他类继承。
常用方法:
- String name(): 返回此枚举实例的名称,即枚举值 。
- String toString(): 返回枚举值的名称,与 name 方法类似,更常用。
- static values(): 返回一个包含全部枚举值的数组,可以用来遍历所有枚举值。
- static valueOf(): 返回带指定名称的指定枚举类型的枚举常量,名称必须与在此类型中声明枚举常量所用的标识符完全匹配(不允许使用额外的空白字符)。这个方法与toString相对应,因此重写 toString() 方法,一定要重写 valueOf() 方法(我们可以重写 toString() 方法,但不能自己重写 valueOf() 方法,当我们重写 toString() 方法时,valueOf() 方法会自动重写,不用我们理会)。
- Switch() 的参数可以接受枚举。
- boolean equals()方法: 比较两个枚举类对象的引用。
网友评论