【发布时间】:2015-03-16 20:57:38
【问题描述】:
有没有办法从枚举本身中设置枚举父/超类中保存的变量? (以下内容未编译,但说明了我想要实现的目标)......
class MyClass{
ObjectType type;
String someValue;
public void setType(ObjectType thisType){
type = thisType;
}
enum ObjectType {
ball{
@Override
public void setValue(){
someValue = "This is a ball"; //Some value isn't accessible from here
}
},
bat{
@Override
public void setValue(){
someValue = "This is a bat"; //Some value isn't accessible from here
}
},
net{
@Override
public void setValue(){
someValue = "This is a net"; //Some value isn't accessible from here
}
};
public abstract void setValue();
}
}
然后,像这样:
MyClass myObject = new MyClass();
myObject.setType(ObjectType.ball);
完成上述操作后,myObject 的“someValue”字符串现在应该设置为“This is a ball”。
有什么办法吗?
【问题讨论】:
-
将状态存储在枚举中,或者通过使其看起来可变来获得这种能力,是一个非常糟糕的主意。但是,您可以做的是在枚举的构造函数中传递参数。看看Planet example。
标签: java object enums enumeration