我有一个名为Fighter的超类。从战斗机中有骑士,魔法师,巨魔和食人魔的子类。 Sorcerer,Troll和Ogre实现了一个名为Enemy的界面。
Enemy包含此ArrayList:
ArrayList<Enemy> enemy = new ArrayList<Enemy>();
在我的驱动文件中,我使用Sorcerer,Troll和Ogre类型的对象随机填充ArrayList。
我的问题是当我尝试在ArrayList中调用类型Sorcerer,Troll和Ogre的方法时。
以下是一些示例代码:
while(javalot.getHealth() > 0)
{
int attack;
for(Enemy i : Enemy.enemy)
{
attack = javalot.toFight();
if(i instanceof Sorcerer)
{
System.out.println("Health " +((Sorcerer) i).getHealth());
((Sorcerer) i).takeDamage(attack, sorcArmor, weapon);
System.out.println("Health " +((Sorcerer) i).getHealth());
}
else if(i instanceof Troll)
{
System.out.println("Health" +((Troll) i).getHealth());
((Troll) i).takeDamage(attack,trollArmor, weapon);
System.out.println("Health" +((Troll) i).getHealth());
}
else
{
System.out.println("Health" +((Ogre) i).getHealth());
((Ogre) i).takeDamage(attack, ogreArmor, weapon);
System.out.println("Health" +((Ogre) i).getHealth());
}
}
}
我的问题是我是否可以通过这样的界面使用instanceof?
我假设没有,因为我正在做什么,但它没有输出任何东西。
我的下一个问题是有更好的方法来实现我想要做的事情吗?