fer*_*rck 6 java enums instance-variables inner-classes
据我所知,内部枚举总是在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;
}
Run Code Online (Sandbox Code Playgroud)
我发现在每个枚举常量中重写方法非常方便,所以我可以在我的外部类中使用它.在java中它是一个糟糕的编程风格,因为它实际上是被禁止的?
有没有办法创建内部枚举与访问我的实例变量?
提前致谢.
有没有办法创建内部枚举来访问我的实例变量?
Anenum是一种编译时构造(预定义),因此,其中的任何外部数据都必须在运行时可供编译器使用。
除非您显式地将变量(或在您的情况下包含变量的某个引用this)传递给 中的方法enum,否则您将无法引用它。