以下代码几乎在每次调用时都会引发 ConcurrentModificationException。第二段代码不会引发异常,但这不是我需要的正确逻辑。如果对象是 的实例EditorFrame
,我需要调用自定义处置策略,这就是该close()
方法的内容。但是,如果它只是一个基本框架,我希望它调用dispose()
.
我环顾了这个网站并遵循了一些说明,但我发现没有一个有效。
抛出异常的代码:
synchronized (frameList) {
for (Iterator<JFrame> it = frameList.iterator(); it.hasNext();) {
JFrame frame = it.next();
if (frame instanceof EditorFrame) ((EditorFrame) frame).close();
else frame.dispose();
it.remove();
}
}
这段代码有效,但这不是我想要的:
synchronized (frameList) {
for (Iterator<JFrame> it = frameList.iterator(); it.hasNext();) {
JFrame frame = it.next();
frame.dispose();
it.remove();
}
}
感谢您的帮助!