ある時点で尋ねられたに違いないと思うので、この質問を探してみましたが、これは私が見つけることができる最も近いものでした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
、素晴らしいアイデアではないにしても、うまくいくはずだと思います。実際、上記のコードを実行すると、正常に印刷されます。
try
/の間で GC が開始され、finally
何らかの問題が発生する可能性はありますか?