我有一个关于枚举的问题(它可能是一个简单的但......).这是我的计划:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为什么输出是
hello
hello
Run Code Online (Sandbox Code Playgroud)
并不是
hello
?
代码如何"两次"到构造函数?第一次是什么时候,第二次是什么时候?为什么枚举构造函数不能公开?这是它打印两次而不是一次打印的原因吗?
pie*_*t.t 29
枚举是单身人士和他们在班级的加载实例化-这样的两个"你好"来自instanciatingš MyEnum.ONE和MyEnum.TWO(只是尝试打印value为好).
这也是构造函数不能公开的原因:Enum保证每个值只有一个实例 - 如果其他人可以使用构造函数则不能.
Mic*_*ian 11
代码如何"两次"到构造函数?
为枚举的每个元素调用Conctructor.很少改变你的示例来演示它:
public class Hello {
public enum MyEnum {
ONE(1), TWO(2);
private int value;
private MyEnum(int value) {
this.value = value;
System.out.println("hello "+this.value);
}
public int getValue() {
return value;
}
}
public static void main(String[] args) {
MyEnum e = MyEnum.ONE;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
hello 1
hello 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
928 次 |
| 最近记录: |