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类中看到game
和this
。 game
不是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)