所以我有 list
public List<Entity> entities;//initialized in constructor by entities = new ArrayList<Entity>();
每当我做类似的事情
entities.get(1).destroy();
它将该方法应用于列表中同一类的每个实体(就像我有类史莱姆 destroy() 会影响所有史莱姆,但不会影响其他内容)。有什么办法可以解决这个问题吗?
编辑:我刚刚做了一些测试。显然它只影响数组中第一个受影响的实体之后的实体。
edit2:好的,完成更多测试,因此您不妨忽略上面的整个部分。在数组列表中,每当我调用remove(int i)时,它都会删除放入位置的对象及其后面的所有对象。
最佳答案
检查列表中的所有引用是否都指向单个对象。
当您将 A
类型的变量分配给另一个变量时,仅复制引用。该物体仍然是独一无二的。因此,如果您想销毁
某个元素,您应该检查它是否是使用new
创建的,正如 JB Nizet 指出的那样。
关于java - 删除后销毁所有实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11550028/