【发布时间】:2015-08-05 07:02:47
【问题描述】:
我有 ClassA,它有一个静态的 ArrayList 对象
public static ArrayList<Meteorit> meteorits = new ArrayList<Meteorit>();
现在我想像这样从这个列表中删除一个对象
ClassA.meteorits.remove(this);
这是用 Meteorit class 写的。但是当我想使用 ArrayList 中的对象时,它会引发异常。
Exception in thread "LWJGL Application" java.util.ConcurrentModificationException
我使用 Iterator 从 ArrayList 中删除对象,但现在我不知道在这种情况下如何使用它。
【问题讨论】:
-
ArrayList 为什么是
static?我建议完全按照observer设计模式所做的那样做。首先,在ClassA中创建一个方法,将其命名为public removeMetorit(Meteorit meteorit),并在除Meteorit类之外的任何地方使用它。 -
另外,您正在从要删除的对象内部调用
remove方法,这是非法的。 -
我希望陨石将自己从列表中删除,我不认为这是非法的。