Java:Interface的ArrayList中的不同对象

时间:2015-03-29 21:39:01

标签: java arraylist

我有一个名为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?

我假设没有,因为我正在做什么,但它没有输出任何东西。

我的下一个问题是有更好的方法来实现我想要做的事情吗?

0 个答案:

没有答案