所以我有清单
public List<Entity> entities;//initialized in constructor by entities = new ArrayList<Entity>();
每当我做
之类的事情entities.get(1).destroy();
它将方法应用于同一个类的每个单独实体(如果我有类slime destroy()会影响列表中的所有粘液,而不是其他)。有什么方法可以解决这个问题吗?
编辑:我刚做了一些测试。显然它只影响数组中受影响的第一个实体后的实体。
edit2:好的测试已经完成了,因此你可能会忽略整个上面的部分。在一个arraylist中,每当我调用remove(int i)时,它都会删除放在其中的对象以及它之后的所有对象。
答案 0 :(得分:2)
检查列表中的所有引用是否都指向单个对象。
将A
类型的变量分配给另一个变量时,仅复制引用。该对象仍然是独一无二的。因此,如果你想要destroy
某个元素,你应该检查它是否已经用new
创建,正如JB Nizet指出的那样。