编译器给出了没有意义的编译错误。
“无法静态引用非静态字段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/