我知道我可以创建一个这样的枚举:
public enum MyEnum {
ONE(1),
TWO(2);
private int value;
private MyEnum(int value) {
this.value = value);
}
public int getValue() {
return value;
}
}
但我有一些问题:
1)似乎枚举值是在开始时声明的。有没有特定的格式。我可以在任何地方申报吗?
2)是否可以声明具有多个构造函数的枚举,这是人们有时会做的事情吗?
答案 0 :(得分:8)
你可以通过自己尝试来发现。
答案 1 :(得分:8)
public enum MyEnum {
ONE(1),
TWO(1, 2);
private int value1, value2;
private MyEnum(int value) {
this.value1 = value;
this.value2 = 0; // default
// this.value2 = getFromSomewhereElse(); // get it at runtime
}
private MyEnum(int value1, int value2) {
this.value1 = value1;
this.value2 = value2;
}
public int getValue1() {
return this.value1;
}
public int getValue2() {
return this.value2;
}
}
答案 2 :(得分:4)
根据JLS 7,常数先行。
"枚举声明中的任何构造函数或成员声明都应用于枚举类型,就像它们已存在于普通类声明的类主体中一样,除非另有明确说明。"和"如果枚举类型的构造函数声明是公共的或受保护的,则是编译时错误。" (同上,8.9.2)