【发布时间】:2015-08-12 06:16:01
【问题描述】:
在以下代码中:
enum Rank {
FIRST(20), SECOND(0), THIRD(8);
Rank(int value) {
System.out.print(value);
}
public static void main (String[] args) {
System.out.println(" " + Rank.values().length);
}
}
这给出了以下输出:
2008 3
如果 main 方法在其他类中声明,如下所示:
class XYZ {
public static void main (String[] args) {
System.out.println("\n" + Rank.values().length);
}
}
输出只有3。
枚举中的main 和类中的main 有什么区别?为什么我有两个不同的输出?
【问题讨论】:
-
枚举和其他类没有区别。只是在加载类时运行代码这一事实有所不同。有点像你在 XYZ 中有一个静态块并在那里添加了一个打印语句。
-
你确定你的第一个代码 sn-p 对左花括号和右花括号是正确的吗?
-
我无法重现您的问题。当我使用外部类时,我得到了输出
2008 3。我还在Rank中注释掉了他的main方法,但输出仍然相同 -
枚举实例为
public static final。如果您向XYZ添加等效字段和一个ctor,它会做同样的事情,因为静态字段在类第一次使用时由类加载器初始化。
标签: java oop enums static main