比较对象的问题

时间:2014-01-31 01:58:34

标签: java compare

我试图从一个类中的arraylist中删除“thing”,并将其添加到另一个类中的另一个arraylist中。

我有一个Player类,它包含两个数组列表,类型为Creature,类型为SpecialIncomeCounter。 我还有一个Bag类,它包含一个“Things”的数组列表,它们是Creatures和SpecialIncomeCounters。

我的Creature和SpecialIncomeCounter类都继承自我的抽象类Thing。

在第三节课中,我试图从我的Bag数组列表中取出“Things”并将其添加到我的播放器类中的正确数组列表中。

这就是我现在正在做的事情:

Thing thing;
for(int i=0;i<10;i++){
    thing = bag.bag.get(i);
    if(thing == Creature){ //this doesn't work
        p1.addCreature((Creature)thing);
        bag.bag.remove(i);
    }
    else if(thing ==  SpecialIncomeCounter){  //this doesn't work
        p1.addSpecialIncomeCounter((SpecialIncomeCounter)thing);
        bag.bag.remove(i);
    }
}

问题是我无法弄清楚如何判断事物是否属于SpecialIncomeCounter或Creature。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

instanceof正是您要找的。

 Thing thing;
    for(int i=0;i<10;i++){
        thing = bag.bag.get(i);
        if(thing instanceof Creature){ 
            p1.addCreature((Creature)thing);
            bag.bag.remove(i);
        }
        else if(thing instanceof SpecialIncomeCounter){  
            p1.addSpecialIncomeCounter((SpecialIncomeCounter)thing);
            bag.bag.remove(i);
        }
    }