【发布时间】:2011-09-04 16:23:09
【问题描述】:
我已经阅读了内部类教程,但不明白一件事。据说内部类包含对外部类的隐藏引用,所以我通过这个普通类提出了几个问题:
public class OuterClass {
public void doSomething() {
JButton button = new JButton();
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
}
}
所以我们有一个本地内部类,它位于方法 doSomething() 中,我有一些问题。
这个本地内部类是否持有对 OuterClass 的引用,因为它是本地的?
这个本地内部类在方法
doSomething()终止后是否保留内存?是否存在 OuterClass 符合 GC 条件但本地内部类仍被其他类引用的情况?会发生什么?
【问题讨论】:
-
您从未投票或接受过您之前问题的答案。请对此进行改进。
-
我想为这个问题点赞,但看了你的个人资料,你从来没有接受过答案,或者更糟糕的是,从来没有给任何人投票过,很抱歉,你错过了我的投票。
-
@Final:至少你的问题的第 1 点和第 3 点可以通过编写一个简单的测试程序来解决。
-
@Harry:你是在对问题投票,而不是对提问者 ;-) 一个好的问题值得一票,即使提问者可以以某种方式改进。
-
@Joachim:但问题始终属于提问者,我不支持只通过提问而不放弃投票或接受答案来不断获得声誉和特权的人。
标签: java garbage-collection inner-classes