我想找到一種方法來繞過使用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
你可以分享你的代碼嗎正在嘗試? –