在Java中,内部类可以访问封闭类的私有(private)成员。但是外部类可以访问内部类的私有(private)成员吗?这与内部类是否是静态的无关。我认为这不是真的,但以下代码似乎可以编译并正常工作。
public class Outer {
class Inner {
private int i = 0;
private Inner() {}
}
public static void main(String[] args) {
Outer o = new Outer();
Outer.Inner oi = o.new Inner();
oi.i = 10;
}
}
最佳答案
是的,没关系。来自 JLS,section 6.6.1 :
Otherwise, if the member or constructor is declared
private
, then access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.
您甚至可以在另一个嵌套类型 Y 中引用嵌套类型 X 的私有(private)成员,只要它们共享一个顶级类。
在字节码级别,我相信这都是通过添加合成包访问方法来实现的。
关于java - 在Java嵌套类中,封闭类可以访问内部类的私有(private)成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2221607/