Есть ли способ установить переменную, содержащуюся в родительском/суперклассе enums из самого enum? (Ниже не компилируется, но показывает, что я пытаюсь добиться) ....Доступ к переменным суперкласса из перечисления
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);
После выполнения выше, «SomeValue 'строка myObject теперь должна быть установлена на «Это мяч».
Есть ли способ сделать это?
Сохранение состояния в перечислении или наличие этой способности, заставляя его выглядеть изменчивым, является очень плохим идеей. Однако вы можете использовать параметры pass в конструкторе enum. Взгляните на пример [Planet] (http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html). –