所以我正在制作一个游戏,在这个游戏中玩家有一个包含物品清单的库存,因为有不同种类的物品,我有一个物品,食物项目等等。我想要一个按钮,说吃饭,按钮只是呈现,如果该项目是一个让我说食品,我想知道是否有一种方法来测试,看看它是否是一个食品项目列表,我知道之前已经问过这个问题,但我发现答案有点模糊,我已经尝试过像instanceof这样的明显方法(我之后才意识到它对超类的测试),但没有运气,任何帮助都会受到赞赏。< / p>
答案 0 :(得分:0)
if(myItem instanceof FoodItem){
// Print eat
}
答案 1 :(得分:0)
可能最好的方法(以及大多数MUD使用的方法)是允许对象提供自己的命令(即可以对该对象采取的操作)。然后,你可以有一个抽象的超类Food对象,它提供了一个'eat'命令,并被所有食物扩展。
在Java中查看CoffeeMUD冒险游戏引擎。
答案 2 :(得分:0)
一种解决方案是使用一个名为FoodItem的抽象类,然后从中继承。 然后你可以使用
if (item instanceof FoodItem)
如果您希望某件商品属于多个论坛,请改用界面。
另一个解决方案是创建一个组的枚举。 然后每个对象都可以使用getter方法声明它的类型。
public MyEnum getGroup();