编译器给出了没有意义的编译错误。
“无法静态引用非静态字段x”
我没有静态引用。静态内部类应有权访问封闭类的私有(private)成员。实际上,它确实允许我访问super.x

我用Java 1.8尝试过

class Bug
{
   private int x = 0;
   int y;

   static class BugDerived extends Bug
   {
      BugDerived()
      {
         super();

         super.y = 1; // no error
         y = 1;       // no error
         super.x = 1; // no error !
         x = 1;  // ERROR
      }
   }
}

最佳答案

不可以,静态方法只能引用静态字段或其他方法。通过调用super()。x,您可以从非静态上下文中引用非静态属性,这是允许的。

以下报价摘自Oracle website



内部静态类而不是有权访问封闭类的成员(私有(private)方法/变量)。

还看here:

关于java - 这是Java编译器错误吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56423789/

10-14 07:16