2013-10-24 44 views
0

我有兩個類,Items和Monster。怪物是物品的一個子類。我正在循環收集項目實例以查看它們是否與怪物實例匹配,如果是,則將項目實例轉換爲怪物實例。但是我不確定如何將數組列表中的特定項目轉換爲其他類型的類別。下面我的代碼任何幫助將有所幫助。將陣列列表的一個實例投射到另一個實例

public void describe() 
    {  
     int j = 0; 

     while(j < iInstances.size()) 
     { 
      if(iInstances.get(j).equals(mInstances.get(j))) 
      { 

      } 
      iInstances.get(j).describe(); 
     } 
    } 
+1

製作務必在你的循環中增加'j'。 –

回答

2

Monster monster = (Monster) iInstances.get(j);

+0

如果'iInstances.get(j)'擁有'Items'對象,cast將會失敗。在投射前添加檢查('instanceof')。 –

+0

如果你把這個放在if語句裏面,這個永遠不會發生 –

+0

@EugenHalca是的,它意味着在if語句中 – dkatzel

0

如果要檢查每個Item如果是Monster類的一個實例,您可以輕鬆地向它請求實例,然後轉換爲Monster

public void describe() { 
    for (Item item : iInstances) { 
     if (item instanceof Monster) { 
      Monster monster = (Monster) item; 
      // now do what you want with your monster 
     } 
    } 
} 
相關問題