2013-04-25 145 views
-1

這段代碼有什麼問題? 考慮建立一個ArrayList包含了所有的建築和 大廈是農場和StoneMine超:鑄造類型在java中的方法

public Building returnBuilding(int i) 
{ 
    if(buildings.get(i) instanceof Farm) 
     return (Farm)buildings.get(i); 
    if(buildings.get(i) instanceof StoneMine) 
     return (StoneMine)buildings.get(i); 
    else 
     return null; 
} 

然後如果我叫

returnBuilding(1).SOMEMETHODEJUSTINFARMCLASS(); 

building.get(1)是農場類的一個實例, 我得到一個運行時間錯誤

+5

這不會編譯,是嗎? – dasblinkenlight 2013-04-25 12:42:26

+0

什麼是運行時錯誤? – 2013-04-25 12:42:27

+0

歡迎來到StackExchange。 「建築物」是如何申報的? – rajah9 2013-04-25 12:43:57

回答

1

returnBuilding返回一個Building,而不是Farm。在返回之前鑄造game.buildings.get(i)不會改變這一點。

如果運行時類的game.buildings.get(i)Farm,投returnBuilding返回值Farm調用SOMEMETHODEJUSTINFARMCLASS方法之前。