2011-10-09 56 views
1

我有一個完整的許多類和每班我想知道的方式,讓我這樣的自身刪除列表:刪除Java類FOM列表

public class World{ 
    List<Entity> Entities; 
} 
public class Entity{ 
    public void removeselffromlist() 
    { 
     //code i dont know 
    } 
} 

編輯:不會有是多個世界

回答

2

您將不得不將該列表提供給其他班級。一種可能的解決方案是:

public class World { 
    List<Entity> entities; 

    public void removeItem(Entity entity) { 
     entities.remove(entity); 
    } 
} 

public class Entity{ 
    public void removeSelfFromList() { 
     world.removeItem(this); 
    } 
} 

請注意,您需要在某處具有「世界」對象。

2

爲了能夠從列表中刪除自己,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); 
    } 
} 
+0

不會有多個世界 – user985673

-1

雖然我懷疑這整個方法(不知道具體原因你需要做到這一點),得到的答覆是,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對象的管理。

+0

@Downvoter,關心評論? –