枚举常数与枚举类型
在Java接口中会经常看到定义这类public static final的常数。这叫作枚举常数。比如可以使用在switch语法等等在编写程序时会更清晰和可维护。为了编写方便,可以直接省略前面的修饰,事实上在接口里定义的变量值都不可修改。
在JDK5之后新增了enum语法,实际上用关键字enum定义了一个特殊的类,继承自java.lang.Enum(是一个抽象类),这是编译程序处理的,不能继承,否则报错。
public enum Action{
STOP,RIGHT,LEFT,UP,DOWN
}
经过反编译,我们可以了解enum枚举常数的部分细节
public final class Action extends Enum{
private Action(String s,int i){
super(s,i);
}
public static final Action STOP;
……
……
public static final Action DOWN;
static{
STOP=New Action("STOP",0);
……
}
}
结论:用enum定义的是特殊类,定义的枚举常数都是public static final,而且是这个类的实例。而且这个类的构造函数是private,也就是说只能在类中才可以实例化,在类外使用时,我们只能传入Action实例、声明Action以及在switch-case语法中列举Action实例。关于更多自定义枚举,日后会详细说。
参考文章
1.Java enum的使用详解+总结
https://www.cnblogs.com/hyl8218/p/5088287.html
2.Java enum的用法详解
https://www.cnblogs.com/liaojie970/p/6474733.html