2014-07-03 59 views
0

所以我試圖用eclipse開發一個基於磁貼的遊戲,並且我遇到了如何將資源文件夾中的資源加載到ArrayList中的問題。我有一個文件閱讀器,可以將所有需要的文件 加載到一個列表中,但是我不能爲每個tile類型(grass,stone等)使用class文件夾,因爲ArrayList只能存儲一個類類型。有沒有辦法將tile超類的所有子類加載到單個ArrayList中。將資源加載到基於圖塊的遊戲的ArrayList中。 (Java)

回答

1

如果您有一個父類(或接口),其他所有類都可以擴展,那麼您可以簡單地使用該父類的ArrayList。只需創建一個Tiles的ArrayList。

List<Tile> tiles = new ArrayList<Tile>(); 

Tile a = new GrassTile(); //GrassTile extends Tile 
Tile b = new StoneTile(); //StoneTile extends Tile 

tiles.add(a); 
tiles.add(b); 

for(Tile t : tiles){ 
    t.doTileStuff(); 
} 

編輯:你也可以重新考慮你的設計,並試圖支持composition over inheritance。而不是有一堆擴展Tile的類,有一個Tile類,它包含確定它的行爲和外觀的屬性。

0

如果試圖放入單個數組列表中的tile是超類的子類,那麼可以將您的數組列表設置爲在將超類中的子類僞裝成超類時使用。