gpt4 book ai didi

Java : Instantiating method variables

转载 作者:行者123 更新时间:2023-12-02 07:05:03 26 4
gpt4 key购买 nike

我对 Java 编程还比较陌生,可能错过了一些明显的东西,所以请耐心等待。

我正在创建一个程序,该程序使用 Swing API 和 JDesktopPane 来创建 GUI。主屏幕上有一个按钮,上面写着“新窗口”。用户单击它,就会实例化一个新的 JInternalFrame 并将其添加到 JDesktopPane 中。如下简化方法:

protected void createNewWindow(JPanel panel) {

JInternalFrame fooFrame = new JInternalFrame();
fooFrame.setContentPane(panel);
desktop.add(fooFrame);
}

我的问题是这样的。假设用户单击按钮十次。创建了十个 JInternalFrame。它们都是方法变量,因此它们具有相同的名称。

这些旧的 fooFrame 变量会发生什么?垃圾收集器是否会在任何阶段来销毁它们?我没想到还有任何东西仍然引用他们。有什么方法可以访问这些旧的 fooFrame 吗?假设我想更改十个 fooFrame 中的第四个 JPanel 上的文本颜色。有办法做到这一点吗?

我知道这是一种非常愚蠢的做法,只需创建一个 JInternalFrame 实例变量(可能是一个数组)即可在方法中实例化并添加到 JDesktopPane 中,这很简单。我的问题更多的是出于好奇,而不是出于任何原因。

最佳答案

What happens to these old fooFrame variables? Does the garbage collector come and destroy them at any stage?

您的对象desktop正在引用 fooFrame在该方法中创建的,每个都将具有不同的引用,并将由 desktop 维护。一旦desktop超出范围,他们将有资格进行垃圾收集。通常,方法变量在控件脱离方法后有资格进行垃圾回收,因为它们是在方法范围内维护的,但在您的情况下,您有 desktop这是维持在类(class)水平的。

关于Java : Instantiating method variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16207790/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com