我看到一个奇怪的情况,并想知道我是否错过了什么.我有一个类定义这样的枚举
public class Foo {
public enum Day { Monday, Tuesday, ...};
...
}
Run Code Online (Sandbox Code Playgroud)
然后在另一堂课我
public class Bar {
Foo aFoo=new Foo();
void test(){
System.out.println(Foo.Day.Monday); // ok
System.out.println(aFoo.Day.Monday); // complie error Day not accessible
}
}
Run Code Online (Sandbox Code Playgroud)
有人对此有解释吗?谢谢.
原因是当你有一个类似的表达式Q.Id并且Q是一个类型的表达式T(Q是你的aFoo和T = Foo):
如果类型T 中没有一个可访问的(§6.6)成员是名为Id的字段,则会发生编译时错误.
换句话说,您可以使用instance(aFoo.someStaticVariable)引用静态字段,但不能引用嵌套类.
所以你需要Outerclass.Nestedclass用来访问它.