Swing dispose()实际上并不使当前对象引用为空?

时间:2014-08-15 21:31:52

标签: java swing

在想知道处理我的框架是否会返回null (如果选中)之后我继续测试了它。我搜索过dispose(),但我读过的大部分文章只说明何时使用它,而不是实际上。我试用了示例代码,也许我的代码是不正确的,但如果不是。 dispose()在JVM中实际做了什么?

如果有人找到与此相关的链接,请发布,以便我可以删除此问题

2 个答案:

答案 0 :(得分:1)

1)没有方法可以将变量设置为null。永远不能。它可能会改变内部状态,因此任何将来的调用都可能引发错误(例如,使用Socket),但变量本身不会被更改。你需要自己明确地做这件事。

2)阅读javadocs:)

  

释放此Window,其子组件及其所有子组件使用的所有本机屏幕资源。也就是说,这些组件的资源将被销毁,它们使用的任何内存都将返回给操作系统,并且它们将被标记为不可显示。   [...]

答案 1 :(得分:1)

对象可以改变它们的状态。但是,他们不能无情地改变整个其他对象集合中的任何状态。

因此,如果您在对象上调用任何方法,它将不会对来自任何可能对该对象的任何引用产生直接影响>其他对象。

在您的情况下,dispose()将释放对包装的OS级别组件的对象内引用,而不是从环境中删除Java对象(并清除其引用)。