我看到一个奇怪的情况,想知道我是否错过了什么。我有一堂课定义这样的枚举
public class Foo {
public enum Day { Monday, Tuesday, ...};
...
}
然后在另一堂课
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
}
}
有人对此有解释吗?谢谢。
最佳答案
原因是when you have an expression like Q.Id
and Q
is an expression of type T
(Q是您的aFoo
和T = Foo
):
如果不存在一个类型为Id 的字段T 类型的完全可访问的(§6.6)成员,则会发生编译时错误。
换句话说,您可以使用实例(aFoo.someStaticVariable
)引用静态字段,但不能使用嵌套类。
因此,您需要使用Outerclass.Nestedclass
进行访问。