【发布时间】:2013-01-19 21:56:48
【问题描述】:
我正在创建一个游戏。一个游戏有一个 GameMap。为了跟踪 GameMap 上事物的状态,我想为这些事物中的每一个创建 ArrayLists。问题是,我不想创建单独的方法来从每种类型的 ArrayList 中添加或删除项目。我是新手,所以我首先想到的当然是“instanceof”运算符。
请记住,目前,GameMap 是一个离散类,而不是接口或抽象类。目的是在游戏初始化时实例化一个 GameMap 对象。
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);
}
}
【问题讨论】:
-
我不明白你为什么不想要单独的方法。这将使您的代码更具可读性。
-
每个对象、GameMap、Room、Item 和 Person 都包含 ArrayList。这意味着对于每个对象,我必须为每种类型的 ArrayList 编写单独的添加、删除方法。我只是厌倦了打字。
-
您可以通过 1) 复制粘贴 2) 一些智能 IDE 代码生成来解决这个问题。
-
你说得对......我想我正在尝试走“我如何做一些很酷的事情”的道路,从而摆脱了这项任务的单调。
-
我也这么认为。对于它的价值:如果某事是学校作业/家庭作业,请在问题中提及。功课是学习,如果有人为你写了完整的代码,你什么也学不到,不是吗? (这在这种情况下不适用,但请注意。)
标签: java arraylist instanceof