我有一个关于枚举的问题(这可能是一个简单的问题,但是......)。
这是我的程序:
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
and not
hello
?
代码如何“进入”构造函数两次?
第一次是什么时候,第二次是什么时候?
为什么枚举构造函数不能是公共的?
这是否是它打印两次而不是只打印一次的原因?
枚举是单例,它们在类加载时实例化 - 因此两个“hello”来自实例化MyEnum.ONE
and MyEnum.TWO
(只需尝试打印value
以及)。
这也是构造函数不能公开的原因:枚举保证每个值只有一个实例 - 如果其他人可以摆弄构造函数,则不能这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)