【发布时间】:2014-06-28 19:41:34
【问题描述】:
我看到如下枚举用法。
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 的构造函数被调用了 3 次。我只想获取一个值,但创建了三个实例!这不是一件坏事还是我做错了什么?
编辑:我的理解是,当第二次调用MyEnum.ENUM3.getEnum() 时,不再创建新实例。
【问题讨论】:
-
嗯,
ENUM1、ENUM2和ENUM3都必须构造,不是吗? -
了解
.ordinal()是什么 -
你已经定义了三个实例,所以它必须创建你定义的实例。如果您想要更少的实例,请定义您想要的数量。
-
你能解释一下为什么
this a bad thing吗? -
@PeterLawrey 哎呀,很抱歉。我认为这些实例是为每次调用创建的。