NPE构造函数和超类

我有以下代码:

public class CurrentPlayer(override val game: PewGame, spriteSheet: String) : Player(game, spriteSheet) 

层次结构如下:CurrentPlayer – > class Player – > trait MovingEntity – > trait实体。

特质'实体'有一个场'val游戏:PewGame'。 Player的构造函数如下所示:

 public open class Player(override val game: PewGame, spriteSheet: String) : MovingEntity, InputAdapter() 

在Player的构造函数中,如果你可以在kotlin中调用它,我可以这样做:

 this.sprite = CharacterSpriteSheet(Utilities.createTextureFromFile(spriteSheet), this.game.getSpriteBatch(), 0.25f) 

问题是,'this.game'是null,因此'this.game.getSpriteBatch()'抛出一个NPE。 我不能以更好的方式解释这一点,所以任何帮助表示赞赏。 更确切地说,在使用调试器之后:

我可以在Player类中看到gamethisgame不是null,但是this.game game是空的一些莫名其妙的原因。

感谢您的帮助!

编辑:我忘了提到,问题是只存在当我实例化CurrentPlayer时,并没有发生时,我实例化播放器。

问题是,你在两个字段中存储相同的数据:你重写Player game ,然后再次在CurrentPlayer ,使相同的数据存储两次。 顺便说一下,它使得game属性的getter访问CurrentPlayer未初始化的字段,而不是在Player初始化的字段。

要解决这个问题,只需从CurrentPlayer声明中删除override val

 public class CurrentPlayer(game: PewGame, spriteSheet: String) : Player(game, spriteSheet)