kotlin - 在 Kotlin 中使用接口(interface)委托(delegate)时可以显式调用父类(super class)吗?

标签 kotlin

我使用接口(interface)委托(delegate)描述here .有没有办法使用它但覆盖并显式调用父类(super class)(委托(delegate))?

这些方面的东西(不编译):

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)    
    }
}

最佳答案

您无法访问 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)
    }
}

关于kotlin - 在 Kotlin 中使用接口(interface)委托(delegate)时可以显式调用父类(super class)吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280224/

相关文章:

java - 使用 Android Room 时不使用 allowedmainthreadqueries() 的最佳方法是什么?

kotlin - IntelliJ在新的Ktor项目中缺少对slf4j的引用

android - 如何在Android Studio中无缝循环播放视频

android - 如何在 kotlin 协程上进行指数退避重试

android - 如何将 Alexa 语音服务集成到自定义 Android 应用程序

android - 如何处理 'Cannot Find Getter For Field'错误?

java - 为什么在带有 Java 8 日期的 Jackson 的 ObjectMapper 中使用 dateFormat 时不从 JSON 中排除毫秒?

android - 避免Kotlin中的竞争条件,Smartcast是不可能的运行时异常

android - 我可以使用 SqlDelight 创建一个内存数据库以在 Android 中运行吗?

Kotlin 中的 android.R.id View 绑定(bind)