【发布时间】:2013-12-03 07:07:33
【问题描述】:
我有一个关于枚举的问题(它可能是一个简单的问题,但是......)。 这是我的程序:
public class Hello {
public enum MyEnum
{
ONE(1), TWO(2);
private int value;
private MyEnum(int value)
{
System.out.println("hello");
this.value = value;
}
public int getValue()
{
return value;
}
}
public static void main(String[] args)
{
MyEnum e = MyEnum.ONE;
}
}
我的问题是:为什么输出是
hello
hello
而不是
hello
?
代码如何“去”两次到构造函数? 第一次是什么时候,第二次是什么时候? 为什么枚举构造函数不能公开? 这是它打印两次而不是一次的原因吗?
【问题讨论】:
-
更改为 System.out.println("hello" + value );那么你就清楚了
-
您还会注意到,像在
main()中那样声明枚举实例没有任何效果。注释掉该行,构造函数仍然会运行两次。 -
想想你为什么写 ONE(1),而不是 ONE("one") 或 ONE()?