【发布时间】:2014-08-15 17:38:13
【问题描述】:
我有一个枚举,想在构造函数中使用静态值作为参数。
public enum Enum
{
e1(0),
e2(1),
e3(SPECIAL_VALUE);
static int SPECIAL_VALUE = -1;
int value;
private Enum(int value)
{
this.value = value;
}
}
在这个例子中,SPECIAL_VALUE 在初始化之前就被访问了,所以这显然是行不通的。我想知道是否有一个通用的解决方案。或者我不需要这样做的原因。
注意:某处可能存在重复项,但我能找到的所有内容都与在构造函数主体中使用静态字段有关,而不是作为参数,而且我认为那里提供的解决方案不适用.
【问题讨论】:
-
原因:在定义之前不能引用一个字段。
-
final的使用有问题吗? -
@Jashaszun
final不会解决问题。 -
既然可以直接输入想要的值,为什么还要在这里使用静态字段呢?
-
看起来像XY-problem。你能解释一下在你的真实代码中从静态字段传递值的目的是什么?
标签: java constructor enums