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