gpt4 book ai didi

Java:在列表中添加或删除元素时避免使用 'instanceof'

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:22 26 4
gpt4 key购买 nike

我正在创建一个游戏。一个游戏有一个 GameMap。为了跟踪 GameMap 上事物的状态,我想为每个事物创建 ArrayList。问题是,我不想创建单独的方法来从每种类型的 ArrayList 中添加或删除项目。我是新手,所以我首先想到的当然是“instanceof”运算符。

请记住,目前,GameMap 是一个离散类,而不是接口(interface)或抽象类。目的是在游戏初始化时实例化一个 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);
}
}

最佳答案

使用overloaded方法:

void addObject(Room room) {
roomsOnMap.add(room);
}

void addObject(Item item) {
itemsOnMap.add(item);
}

..

关于Java:在列表中添加或删除元素时避免使用 'instanceof',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com