1 java enum(枚举)使用详解 + 总结 主要是跟API相关的介绍
2 java枚举7种常见用法 主要是enum的用法介绍。
我的理解
public
enum
EnumTest {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
|
这段代码实际上调用了7次 Enum(String name, int ordinal):
new
Enum<EnumTest>(
"MON"
,
0
);
new
Enum<EnumTest>(
"TUE"
,
1
);
new
Enum<EnumTest>(
"WED"
,
2
);
|
因为子类没有提供构造函数,子类直接调用继承于父类的构造函数。
那么,- public enum Color {
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
- // 成员变量
- private String name;
- private int index;
- // 构造方法
- private Color(String name, int index) {
- this.name = name;
- this.index = index;
- }
此时该作何解释呢?它是怎么具体调用的呢?(后面系原创思考)
读过两篇很好的博文后,你就知道了,声明为enum的类实际上与普通的类没什么区别(可由反编译后的程序看出来),它隐式地继承了java.lang.Enum,故不允许使用extends继承其他类。
此时,你应当注意到 Color类的构造方法是用private修饰的,即使是default也默认为private。
From: http://download.oracle.com/javase/tutorial/java/javaOO/enum.html
Note: The constructor for an enum type must be package-private or private access. It automatically creates the constants that are defined at the beginning of the enum body. You cannot invoke an enum constructor yourself.
显然,这是规定,当然,private 的构造函数只允许你在当前类内实例化对象,即第一行的
- RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
JAVA规定enum类所声明的常量必须在第一行声明,即比其他代码块都要靠前。
此时,子类提供了自己的构造函数,子类对象调用子类的构造函数。
- RED("红色", 1) 相当于 Color RED = new Color("红色", 1); 其他同理。