您可以在Kotlin中使用接口委托时显式调用父类吗?

时间:2018-11-13 11:38:14

标签: kotlin

我使用了here中所述的接口委托。有没有办法使用它,但是可以重写并显式调用父类(委托)?

遵循这些原则(无法编译):

class Rect(val width: Int, val height: Int, position: Position) : Positionable by DefaultPositionable(position) {

    override fun getPosition() {
        val parent = super.getPosition()
        return parent.copy(x = parent.x + 1)    
    }
}

1 个答案:

答案 0 :(得分:1)

在这种情况下,您将无法访问delegate。解决方法是,您可以使用下一种方法

class Rect(
    val width: Int,
    val height: Int,
    val pos: Position,
    private val positinable: Positionable = DefaultPositionable(pos)
) : Positionable by positinable {
    override fun getPosition(): Position {
        val parent = positinable.getPosition()
        return parent.copy(x = parent.x + 1)
    }
}