Kotlin定制二传手

我正在试图为libGDX的精灵做一个自定义的属性设置器。

var sprite : Sprite? = null get() = sprite set(s : String) { sprite = Sprite(Texture(s)) } 

但是这是说s必须是Sprite类型,可以做我想做的事情吗?

首先你应该在自定义的getter / setter中使用field而不是sprite 。 否则,递归调用将是结果。

正如编译器告诉你的那样,你正在做的事情是行不通的。 你需要重载setter,并把它作为一个普通的方法添加到你的类中,如下所示:

 setSprite(s : String) { sprite = Sprite(Texture(s)) }