我看到如下的枚举用法。
public enum MyEnum {
ENUM1(1),
ENUM2(2),
ENUM3(3);
private int enumValue;
MyEnum(int i) { this.enumValue = i; }
public int getEnum() { return this.enumValue; }
}
// this is the call
MyEnum.ENUM1.getEnum()
当进行上述调用时,MyEnum的构造函数被调用三次。我想要的只是一个值,但创建了三个实例!这不是一件坏事,还是我做错了什么?
编辑:据我所知,当第二次调用MyEnum.ENUM3.getEnum()
时,不再创建新实例。
答案 0 :(得分:3)
你有三个枚举常量
ENUM1(1),
ENUM2(2),
ENUM3(3);
对于每个常量,需要调用构造函数。这是正常行为。
当加载和初始化枚举类时,常量都被初始化。
答案 1 :(得分:1)
创建三个实例ENUM1,ENUM2和ENUM3--由于在加载类时声明了MyEnum。您的调用只是检索与ENUM1关联的int。
这是定义Java枚举的方式。你无法改变它。