基本上,我一直在尝试构建一个2D数组,该数组拥有各种儿童课程的数组,这些阵列都扩展了同一父级。这里的父级是岩石,摇滚,动力,敌人和玩家查询者的游戏元素。
public class GameWorld implements Serializable {
private static GameWorld gameWorld = new GameWorld();
private Array<Array<GameElement>> gameElementsArray = new Array<Array<GameElement>>();
private PlayerCharacter playerCharacter;
private Array<Rock> rocks;
private Array<RockMoving> rocksMoving;
private Array<Enemy> enemyArray;
private Array<Powerups> powerups;
private Vector2 backgroundPos1, backgroundPos2;
public static GameWorld getInstance() {
return gameWorld;
}
private GameWorld() {
gameElementsArray.add(rocks);
gameElementsArray.add(rocksMoving);
gameElementsArray.add(powerups);
gameElementsArray.add(enemyArray);
}
}
问题是,我得到
add(com.badlogic.gdx.utils.Array<com.mygdx.game.sprites.GameElement>)
in Array cannot be applied to
(com.badlogic.gdx.utils.Array<com.mygdx.game.sprites.enemies.Enemy>)
响应中的错误。我们正在使用libgdx自己的数组库(我正在慢慢成长为讨厌。(。
这是Java烦人通用物质的限制。您可以给主数组一种? extends GameElement
类型,因此声明为:
private Array<Array<? extends GameElement>> gameElementsArray = new Array<Array<? extends GameElement>>();
这允许任何具有将GameElement
添加到数组的类型的数组(您甚至可以使用类型的GameElement
添加数组(。
ps:如果您这么讨厌阵列,为什么不使用Java的列表?