private
成员的引用。
对于此类引用,javac 将生成 package-private 合成访问器方法,这可能会危及安全性,因为看似私有的成员实际上可以从整个软件包中访问。
嵌套类及其外部类会被编译为单独的类文件。 Java 虚拟机通常会禁止从一个类访问另一个类的 private 字段和方法。 为了允许从嵌套类访问外部类的 private 成员,javac 创建了一个 package-private 合成访问器方法。
通过将 private
成员设为 package-private,实际的可访问性变成了显式。
这也会节省少量内存,可能会在资源受限的环境中提高性能。
此检查不会报告语言级别是否设置为 Java 11 或更高版本,因为由于基于嵌套的访问控制 (JEP 181),不再生成访问器方法。
示例:
class Outer {
private void x() {}
class Inner {
void y() {
x();
}
}
}
在应用快速修复后:
class Outer {
void x() {}
class Inner {
void y() {
x();
}
}
}