我看到一个奇怪的情况,想知道我是否错过了什么。我有一堂课定义这样的枚举

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是您的aFooT = Foo):

如果不存在一个类型为Id 的字段T 类型的完全可访问的(§6.6)成员,则会发生编译时错误。

换句话说,您可以使用实例(aFoo.someStaticVariable)引用静态字段,但不能使用嵌套类。

因此,您需要使用Outerclass.Nestedclass进行访问。

09-13 11:05