报告可以设置为 static 的内部类。

在 Java 17 及更早版本中,非 static 内部类包含对其封闭实例的隐式引用。 static 嵌套类没有此类引用。 因此,将内部类设为 static 可以避免出现常见的内存泄漏原因,并略微减少该类的每个实例使用的内存。

Java 18 中移除了对非 Serializable 内部类的隐式引用。

示例:


  public class Outer {
    class Inner { // 非 static
      public void foo() {
        bar("x");
      }

      private void bar(String string) {}
    }
  }

在应用快速修复后:


  public class Outer {
    static class Inner {
      public void foo() {
        bar("x");
      }

      private void bar(String string) {}
    }
  }