该值不一定为null(我认为?),因为它仍然是一个有效的引用。
答案 0 :(得分:3)
JFrame是一个对象,因此永远不能为null,而JFrame变量可以引用有效的JFrame对象,也可以没有引用,因此"为null"。如果在JFrame对象上调用dispose()
,则该对象仍然存在,因此该变量不为null。然而,JFrame已经发布了一些系统资源。如果重新呈现JFrame对象,将再次获得这些资源。
通常情况下,对此类问题的最佳测试是:1)创建并运行测试代码,2)检查API
如,
JFrame frame = new JFrame("Foo");
frame.pack();
frame.setVisible(true);
// in some listener
frame.dispose(); // it's no longer visible
System.out.println("is frame null? " + (frame == null));
根据Window API,dispose方法继承自:
释放此Window,其子组件及其所有子组件使用的所有本机屏幕资源。也就是说,这些组件的资源将被销毁,它们使用的任何内存都将返回给操作系统,并且它们将被标记为不可显示。 通过随后调用pack或show重建本机资源,可以再次显示Window及其子组件。重新创建的窗口及其子组件的状态将与窗口处置点处的这些对象的状态相同(不考虑这些操作之间的其他修改)。