【发布时间】:2013-11-23 22:38:30
【问题描述】:
据我了解,内部枚举在 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中不好的编程风格,因为实际上是被禁止的?
有什么方法可以通过访问我的实例变量来创建内部枚举?
提前致谢。
【问题讨论】:
-
将
this传递给doSomething()以访问i -
+1 我什至不知道内部枚举存在。我会查找这是在哪个版本的 java 中引入的。
-
@TejaswiRana 引入枚举的 Java 版本相同。
-
"在java中是不是一种不好的编程风格,因为它实际上是被禁止的?"这个问题没有意义。这是被禁止的,所以它不是Java中的任何种编程风格。
标签: java enums inner-classes instance-variables