09为什么 Java 外部类可以访问静态内部类的 private 属性?(百度面试题)
原因静态内部类在经过Java编译器编译后会生成private属性对应的access$Xxx(),供外部类使用。一个类被使用到的时候才会加载到内存。静态内部类之所以可以延迟加载是因为,外部类通过调用静态内部类的static方法(access$Xxx()),也就是会执行invokestatic这个字节码从而引起静态内部类加载(这是触发类加载的一种场景)。扩展可以通过在私有的构造方法中判断对象引用是否为null来防止反射调用。
来自:面向对象编程OOP-public/protected/private/default