java - 在 try block 中放置 JDialog,然后在匹配的 finally block 中继续执行代码是否安全?

标签 java swing dispose jdialog try-finally

我试着四处搜索这个问题,我想它一定是在某个时候被问到的,但这是我能找到的最接近的问题 Remove Top-Level Container on Runtime .

我的问题是,在 JDialog 中调用 dispose() 之后,如果处置是在 中完成的,那么在该对话框中执行代码是否安全try 并且执行代码在 finally?

中完成

这里有一个例子来说明我在问什么:

import java.awt.EventQueue;
import javax.swing.JDialog;

public class DisposeTestDialog extends JDialog {
    private final String somethingToPrint;

    public DisposeTestDialog(String somethingToPrint) {
        this.somethingToPrint = somethingToPrint;
    }

    public void showAndDispose() {
        setVisible(true);
        // Do something
        setVisible(false);
        try {
            dispose();
        }
        finally {
            System.out.println(somethingToPrint);
        }
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                DisposeTestDialog dialog = new DisposeTestDialog("Can this be safely printed?");
                dialog.showAndDispose();
            }

        });
    }
}

根据我对 dispose() 过程和 finally block 的了解,我认为它应该可以正常工作,即使不是一个好主意。确实运行上面的代码确实成功打印。

GC 是否可能在 try/finally 之间开始并导致一些问题?

最佳答案

不,就您仅访问非图形对象(例如示例中的字符串)而言。

关于java - 在 try block 中放置 JDialog,然后在匹配的 finally block 中继续执行代码是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22690094/

相关文章:

java - 如何用for循环创建N个ActionListener?

java - 我的 imageIcon 不工作?

Java标签中gif的问题

C# 抽象 Dispose 方法

c# - Dispose,什么时候调用?

java - 安卓。 fragment 不保存它们的状态

java - 计算映射中的类实例

java - 为什么我的代码在检查两个相等的字符串时返回 false?

java - 对自然语言字符串进行分类的技术?

c# - 定时间隔开始/停止在UDP端口上接收数据