答案 0 :(得分:6)
静态成员类可以用Java来评估封闭类的成员吗?
是的,他们可以。这很容易检查:
public class Example {
private static String foo = "foo";
private String bar;
private Example() {
this.bar = "bar";
}
static class Inner {
static void check() {
System.out.println(foo);
System.out.println(new Example().bar);
}
}
public static final void main(String[] args) {
Inner.check();
}
}
以上编译并输出" foo"然后" bar",显示:
Inner
可以访问私有静态字段foo
。
Inner
可以访问私有Example
构造函数。
Inner
可以访问私有实例字段bar
。
他们有权访问的原因是嵌套类是封闭类的成员(请参阅JLS§8.1.3,就像任何其他成员一样(例如,封闭的成员函数) class),所以它可以访问封闭类的私有部分,就像封闭类的方法成员一样。
与内部类(非 - static
成员类)不同,该类没有隐式链接到封闭类的封闭实例(没有隐式链接)到this
)。因此,要访问特定于实例的字段或方法,必须创建一个实例(如上所述,当我们想要访问bar
时),否则它没有实例可供使用。