据我了解,内部枚举在 java 中总是显式或隐式静态的。这意味着我无法从我的内部枚举类访问实例字段。
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;
}
我发现只覆盖每个枚举常量中的方法非常方便,所以我可以在我的外部类中使用它。它是java中一种不好的编程风格,因为它实际上是被禁止的吗?
有没有办法通过访问我的实例变量来创建内部枚举?
提前致谢。