我似乎无法从枚举中访问周围类的实例成员,因为我可以从内部类中访问.这是否意味着枚举是静态的?是否可以访问周围类的实例的范围,或者我是否必须将实例传递到我需要它的枚举方法中?
public class Universe {
public final int theAnswer;
public enum Planet {
// ...
EARTH(...);
// ...
// ... constructor etc.
public int deepThought() {
// -> "No enclosing instance of type 'Universe' is accessible in this scope"
return Universe.this.theAnswer;
}
}
public Universe(int locallyUniversalAnswer) {
this.theAnswer = locallyUniversalAnswer;
}
}
Run Code Online (Sandbox Code Playgroud) 今天,我发现自己编写了这样的代码......
public class LocalEnums {
public LocalEnums() {
}
public void foo() {
enum LocalEnum {
A,B,C
};
// ....
// class LocalClass { }
}
}
Run Code Online (Sandbox Code Playgroud)
当编译器报告本地错误时,我有点惊讶enum:
成员枚举LocalEnum不能是本地的
为什么枚举不能像类一样在本地声明?
我发现这在某些情况下非常有用.在我工作的情况下,其余的代码不需要知道任何关于enum.
是否有任何结构/设计冲突可以解释为什么这是不可能的,或者这可能是Java 的未来特性?
可能重复:
Java:本地枚举
为什么我们不能在java中的特定方法中定义枚举?如果我有一个场景,我将在方法中使用这些枚举值,而不是在任何其他地方.在方法中声明而不是在全局定义它不是很好吗?我的意思是公开或默认.