2014-01-31 121 views
0

我試圖從一個類中的數組列表中刪除一個「事物」,並將它添加到另一個類中的另一個數組列表中。比較對象的問題

我有一個Player類,它擁有兩個數組列表,它們是Creature類型和SpecialIncomeCounter類型。 我還有一個Bag類,它包含一個「Things」的數組列表,它們是Creatures和SpecialIncomeCounters。

我的生物和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或生物的。

有什麼建議嗎?

回答

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

太棒了,謝謝!我完全忘記了instanceof! – Sarah