Можете ли вы явно вызвать суперкласс при использовании делегирования интерфейса в Kotlin? - PullRequest
0 голосов
/ 13 ноября 2018

Я использую делегирование интерфейса, как описано здесь . Есть ли способ использовать это, но переопределить и явно вызвать суперкласс (делегат)?

Что-то вроде этого (не компилируется):

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 голосов
/ 13 ноября 2018

Вы не можете получить доступ к 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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...