我有一個完整的許多類和每班我想知道的方式,讓我這樣的自身刪除列表:刪除Java類FOM列表
public class World{
List<Entity> Entities;
}
public class Entity{
public void removeselffromlist()
{
//code i dont know
}
}
編輯:不會有是多個世界
我有一個完整的許多類和每班我想知道的方式,讓我這樣的自身刪除列表:刪除Java類FOM列表
public class World{
List<Entity> Entities;
}
public class Entity{
public void removeselffromlist()
{
//code i dont know
}
}
編輯:不會有是多個世界
您將不得不將該列表提供給其他班級。一種可能的解決方案是:
public class World {
List<Entity> entities;
public void removeItem(Entity entity) {
entities.remove(entity);
}
}
public class Entity{
public void removeSelfFromList() {
world.removeItem(this);
}
}
請注意,您需要在某處具有「世界」對象。
爲了能夠從列表中刪除自己,Entity
類需要引用它。實現這一目的的一種方法是通過World
課程的公共方法來控制對列表的添加/刪除;例如
public class World {
private final List<Entity> entities;
public void addEntity(Entity entity) {
if (entity.getWorld() != null) {
throw new IllegalArgumentException("Entity already associated with a world: " + entity);
}
entities.add(entity);
entity.setWorld(this);
}
public void removeEntity(Entity entity) {
if (entity.getWorld() != this) {
throw new IllegalArgumentException("Entity is not associated with this world: " + entity);
}
entities.remove(entity);
entity.setWorld(null);
}
}
public class Entity {
private World world;
public World getWorld() { return world; }
public void setWorld(World world) { this.world = world; }
public void remove() {
world.removeEntity(this);
}
}
雖然我懷疑這整個方法(不知道具體原因你需要做到這一點),得到的答覆是,Entity
類將需要至少World
實例的訪問,如果不是Entities
直接列表。請注意,你應該使用camelCase;變量不應以大寫字母開頭。
public class World{
private List<Entity> myEntities;
public void addEntity(Entity e)
{
myEntities.add(e);
e.setWorld(this);
}
public void removeEntity(Entity e)
{
myEntities.remove(e);
}
}
public class Entity{
private World myWorld;
public setWorld(World w)
{
this.myWorld = w;
}
public void removeselffromlist()
{
//code i dont know
myWorld.removeEntity(this);
}
}
如果我做這樣的事情,我想移動World
類中所有的創造,所有權和Entity
對象的管理。
@Downvoter,關心評論? –
不會有多個世界 – user985673