我见过很多关于访问封闭类的私有(private)成员的问题。然而,我的问题恰恰相反。
如果我有(作为示例)以下代码:
public class A {
private String outerString = "silly string";
static class B {
private final A someA = new A();
public void foo() {
String b = someA.outerString ;
}
}
}
我想知道为什么要编译?由于我从 A 类(通过 someA.outerString)访问“outerString”实例变量的方式,我预计会出现错误。我知道内部类可以通过隐式“this”引用直接访问封闭类成员。但在这里,B 类是静态的,因此“this”引用不适用。
最佳答案
B
是 A
的成员,因此可以访问 A
的 private
字段和方法。
在这种情况下,尽管 B
是 static
,但它使用 A 的实例来访问字段 A.outerString
。
关于java - 为什么我可以访问封闭类引用的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11635282/