我想找到一种方法来绕过使用instanceof。我创建了一个具有WeaponItem和BodyItem等多个子类的类Item。现在我想做一个诸如equip(Item)之类的调用,它应该自行确定它应该调用哪个重载函数,比如equip(BodyItem)。避免Java的实例
有没有办法绕过这种情况下使用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
}
查找double-dispatch和访问者模式 –
[避免Java中的instanceof]可能的重复(http://stackoverflow.com/questions/15457623/avoid-instanceof-in-java) – Qiu
你可以分享你的代码吗正在尝试? –