校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > public/protected/private/default
题目

为什么 Java 外部类可以访问静态内部类的 private 属性?(百度面试题)

解答

原因

静态内部类在经过 Java 编译器编译后会生成 private 属性对应的 access$Xxx(),供外部类使用。

一个类被使用到的时候才会加载到内存。
静态内部类之所以可以延迟加载是因为,外部类通过调用静态内部类的 static 方法(access$Xxx()),也就是会执行 invokestatic 这个字节码从而引起静态内部类加载(这是触发类加载的一种场景)。

扩展

可以通过在私有的构造方法中判断对象引用是否为 null 来防止反射调用

C 1条回复 评论
孤松玉山

前端真的不难,后台确实比前台难一点,奥利给。

发表于 2022-07-29 22:00:00
0 0