class OuterClass {
static int j=99;
static class InnerClass {
public void doSomething() {
while(true)
OuterClass.j= 100;
}
}
}
}
使用上面的代码,当 OuterClass 需要垃圾收集时,垃圾收集是否有任何问题,但可以说 doSomething 正在引用一个静态变量,这会是一个问题吗?我关心的是内部类通过访问变量 j 引用了外部类,我想知道这是否会影响 OuterClass 成为 GC。
最佳答案
虽然您将其命名为InnerClass
,但它不是内部类。它只是一个static
嵌套类。
此类的实例不引用封闭类的任何实例。此外,您引用了封闭类的 static
字段。绝对没有对 OuterClass
的任何实例的引用。
InnerClass
中的任何内容都不能阻止 OuterClass
类型的实例被垃圾回收。
我是不是误解了你的问题?你问的是垃圾收集的类吗?
关于java最佳实践——内部类访问外部类静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28726420/