我正在創建一個遊戲。遊戲有一個GameMap。爲了跟蹤GameMap上的事物狀態,我想爲這些事情創建ArrayLists。問題是,我不想創建單獨的方法來添加或從每種類型的ArrayList中刪除項目。我當然是一個新手,所以我能想到的第一件事就是'instanceof'操作符。請記住,目前GameMap是一個離散的類,而不是一個接口或抽象類。其目的是在遊戲初始化時實例化一個GameMap對象。Java:添加或從列表中刪除元素時避免「instanceof」
public class GameMap {
//GameMap has a name
private String mapName;
//GameMap has rooms
private ArrayList<Room> roomsOnMap;
//GameMap has items
private ArrayList<Item> itemsOnMap;
//GameMap has people
private ArrayList<Person> peopleOnMap;
//construct GameMap with rooms, items, and people
private GameMap(String mapName, ArrayList someRooms, ArrayList someItems, ArrayList somePeople)
{
this.mapName = mapName;
this.roomsOnMap = someRooms;
this.itemsOnMap = someItems;
this.peopleOnMap = somePeople;
}
public void addObject(Object o)
{
//HOW DO I AVOID THIS?
if(o instanceof Room)
{
roomsOnMap.add((Room) o);
}
else if(o instanceof Item)
{
itemsOnMap.add((Item) o);
}
else if(o instanceof Person)
{
peopleOnMap.add((Person) o);
}
}
我不明白爲什麼你不想單獨的方法。它會讓你的代碼更具可讀性。 – 11684
每個對象,GameMap,Room,Item和Person都有ArrayList。這意味着對於每個對象,我必須編寫單獨的添加,刪除每種類型的ArrayList都重載的方法。我只是厭倦了打字。 –
你或許可以通過1)複製粘貼2)一些智能IDE代碼生成來解決這個問題。 – 11684