资源加载到ArrayList中,用于基于图块的游戏。 (JAVA)

时间:2014-07-03 16:16:26

标签: java arraylist resources tile

所以我正在尝试使用eclipse开发基于tile的游戏,并且我遇到了如何将资源从资源文件夹加载到ArrayList的问题。我有一个文件阅读器,可以加载所有需要的文件 到一个列表,但我不能为每个tile类型(草,石头等)使用类文件夹,因为ArrayList只能存储一个类类型。有没有办法将tile超类的所有子类加载到单个ArrayList中。

2 个答案:

答案 0 :(得分: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类。

答案 1 :(得分:0)

如果您尝试放入单个arraylist的tile是超类的子类,那么您可以将arraylist设置为类型超类,同时将子类伪装成超类。