Zip*_*ppy 0 java enums enumeration object
有没有办法在枚举本身内设置枚举父/超类中保存的变量?(以下不编译,但说明了我试图实现的目标)....
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();
}
}
Run Code Online (Sandbox Code Playgroud)
然后,像这样:
MyClass myObject = new MyClass();
myObject.setType(ObjectType.ball);
Run Code Online (Sandbox Code Playgroud)
完成上述操作后,myObject的'someValue'字符串现在应设置为'This is a ball'.
有没有办法做到这一点?
嵌套enum
类型是隐式静态的(请参阅是否将java枚举变量设为静态?).这包括enum
声明为内部类的类型,因此它们无法访问外部类的实例字段.
你不能做你想要做的事情enum
,你必须把它建模为普通的类.