2016-11-5
Java 什么是枚举?
枚举可以看作是一种特殊的类,它继承自 java.lang.Enum 类,因此不能继承其他类,但可以实现接口。
enum关键字和class关键字的约束行为不同
class 定义的类, 通过new操作创建对象, 想new几个就几个
而 enum 关键字定义的类, 其实例对象, 只能在这个enum类中定义好, 它的实例是有限的, 限制了的范围;
枚举(Enum)是 Java 中的一种特殊的数据类型,它允许一个变量只能取预定义的一组常量值
如果我们不自定义枚举类的成员变量和构造方法, 只定义枚举实例, 则枚举实例内容都将以字符串的形式存在, 在类加载的时候会通过 protected Enum(String name, int ordinal) 构造函数被创建为基本的Enum实例;
in short 大约等于一个在static块初始化, 固定实例值的 class
enum TokenType {
AND(10),
OR(10),
REMOVE(10),
CONDITION(10),
OPEN_PARENTHESIS(10),
CLOSE_PARENTHESIS(10),
SOF(100),
EOF(100),
ERROR(10);
private final int priority;
private TokenType(int priority) {
this.priority = priority;
}
public int getPriority() {
return priority;
}
}枚举不仅可以包含简单的常量,还可以包含字段、构造器和方法。例如,我们可以为每个添加一个中文名称:
public enum Day {
MONDAY("星期一"),
TUESDAY("星期二"),
WEDNESDAY("星期三"),
THURSDAY("星期四"),
FRIDAY("星期五"),
SATURDAY("星期六"),
SUNDAY("星期日");
private final String chineseName;
Day(String chineseName) {
this.chineseName = chineseName;
}
public String getChineseName() {
return chineseName;
}
}
public class EnumAdvancedExample {
public static void main(String[] args) {
Day today = Day.MONDAY;
System.out.println("Today is: " + today.getChineseName());
}
}