尝试将儿童类型数组添加到父型2D数组中



基本上,我一直在尝试构建一个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的列表?

最新更新