Как я понял, внутренние перечисления всегда явно неявно статичны в java. Это означает, что я не могу получить доступ к полям экземпляра из моего внутреннего класса enum.Внутреннее перечисление в нестационарном контексте
public class InnerEnum {
private enum SomeInnerEnum {
VALUE1() {
@Override
public void doSomething() {
// ERROR: WON'T COMPILE
// Cannot make static reference
// to non-static field i
System.out.println(i);
}
},
VALUE2() {
@Override
public void doSomething() {
// do something else with i
}
};
public abstract void doSomething();
}
private int i = 10;
}
Я нашел довольно удобным просто переопределить метод в каждой константе enum, поэтому я мог бы использовать его в своем внешнем классе. Это плохой стиль программирования в java, потому что это фактически запрещено?
Есть ли способ создать внутреннее перечисление с доступом к моим переменным экземпляра?
Заранее спасибо.
передать 'this'' 'DoSomething()' для доступа 'i' – ZhongYu
+1 Я даже не знал, что существуют внутренние перечисления. Я посмотрю, какая версия java была введена. – Mukus
@TejaswiRana. В той же версии Java, в которой перечислены перечисления. – EJP