0

所以我有清单

public List<Entity> entities;//initialized in constructor by entities  = new ArrayList<Entity>();

每当我做类似的事情时

entities.get(1).destroy();

它将方法应用于列表中同一类的每个实体(就像我有类粘液 destroy() 会影响所有粘液但不会影响其他任何东西)。有没有什么办法解决这一问题?

编辑:我只是做了一些测试。显然,它只影响数组中第一个受影响的实体之后的实体。

编辑2:好的,完成了更多的测试,因此你不妨忽略上面的整个部分。在一个数组列表中,每当我调用 remove(int i) 时,它都会删除放入位置的对象及其之后的所有对象。

4

1 回答 1

2

检查列表中的所有引用是否都指向单个对象。

当您将一个类型的变量分配给A另一个变量时,只会复制引用。该对象仍然是独一无二的。所以,如果你想要destroy一些元素,你应该检查它是否已经被创建new,正如 JB Nizet 指出的那样。

于 2012-07-18T20:50:45.140 回答