ゲームを作っています。ゲームには 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);
}
}