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) {}
}
}