报告从嵌套类到外部类的非常量 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();
      }
    }
  }