我试图找出声明枚举静态之间的区别吗?
public class Example {
public static enum Days {
MONDAY(1);
private int day;
private Days(int day) {
this.day = day;
}
public int getDayNum() {
return day;
}
}
}
以下一个
public class Example {
public enum Days {
MONDAY(1);
private int day;
private Days(int day) {
this.day = day;
}
public int getDayNum() {
return day;
}
}
}
我可以用完全相同的方式访问上述两种方法
Example.Days.MONDAY.getDayNum();
这是因为枚举是static, final
。那么差异是什么?何时使用上述任何一种?
答案 0 :(得分:10)
根据JLS 8.9:
嵌套枚举类型是隐式静态的。允许将嵌套的枚举类型显式声明为静态。
这意味着无法定义本地(§14.3)枚举,或在内部类中定义枚举(§8.1.3)。
答案 1 :(得分:4)
Enums
隐式public static final
。
因此在枚举中使用static-keyword没有区别。
答案 2 :(得分:2)
没有区别 - 在很多情况下,Java只允许冗余关键字,如果您愿意,可以让您明确。但总的来说,可以理解枚举是静态的,所以在我的脑海中没有理由这样说明
答案 3 :(得分:1)
枚举类型隐式最终,除非它包含至少一个具有类主体的枚举常量。
嵌套枚举类型隐式静态。允许将嵌套的枚举类型显式声明为静态是允许的。