2014-01-31 5 views
0

Я пытаюсь удалить «вещь» из arraylist в одном классе и добавить ее к другому arraylist в другом классе.Вопросы, связанные с объектами

У меня есть класс Player, который содержит два списка массивов, которые имеют тип Creature и тип SpecialIncomeCounter. У меня также есть класс Bag, который содержит список массивов «Вещи», которые являются существами и SpecialIncomeCounters.

Мои классы Creature и SpecialIncomeCounter наследуют от моего абстрактного класса Thing.

В третьем классе я пытаюсь взять «Вещи» из списка «Список мешков» и добавить его в список правильных массивов в моем классе.

Это то, что я делаю сейчас:

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 или Существо.

Любые предложения?

ответ

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); 
     } 
    } 
+0

Удивительный, спасибо! Я полностью забыл об этом! – Sarah

Смежные вопросы