【发布时间】:2015-06-20 11:45:38
【问题描述】:
我正在尝试找到一种绕过使用 instanceof 的方法。我创建了一个类 Item,它有多个子类,如 WeaponItem 和 BodyItem。现在我想做一个调用,比如equip(Item),它应该自己确定应该调用哪个重载函数,比如equip(BodyItem)。
在这种情况下,有没有办法绕过对 instanceof 的使用?您有什么建议?我听说在大多数情况下使用 instanceof 是不好的做法,因此我想知道替代方案是什么。
代码:
inv.equip(it); // inv = inventory object, it = Item
库存类中装备功能的示例我希望它如何
public void equip(HelmItem it)
{
if (it != this.getHelm())
{
this.setHelm(it);
}
}
我以前是怎么做到的:
public void equip(Item it)
{
if (it instanceof WeaponItem)
{
if (it != this.getWeapon())
{
this.setWeapon((WeaponItem) it);
}
} etc for all subclasses of item
}
【问题讨论】:
-
查找双发和访客模式
-
avoid instanceof in Java 的可能重复项
-
你能分享你正在尝试的代码吗?
标签: java instanceof