-1

このコードの何が問題になっていますか? すべての建物を含む ArrayList を作成することを検討してください。Building は Farm と StoneMine のスーパークラスです。

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)は Farm クラスのインスタンスですが、実行時エラーが発生します

4

1 に答える 1

1

returnBuildingBuildingではなく を返しますFarm。戻る前にキャストgame.buildings.get(i)してもそれは変わりません。

のランタイム クラスが の場合game.buildings.get(i)、メソッドを呼び出す前にFarmの戻り値をキャストしreturnBuildingます。FarmSOMEMETHODEJUSTINFARMCLASS

于 2013-04-25T12:46:07.540 に答える