interface - 不是 Kotlin 中的意外覆盖

标签 interface kotlin

我有java接口(interface)

public interface LifecycleRegistryOwner extends LifecycleOwner {
@Override
LifecycleRegistry getLifecycle();
}

和实现这个接口(interface)的 Kotlin 类,如果有
val lifecycle by lazy {
    val result = LifecycleRegistry(this)
    result
}

但编译器说这是一个意外的覆盖。有没有办法说它是故意的?

我目前的实现
class PartnerSettingsActivity :AppCompatActivity(),LifecycleRegistryOwner {
    private val registry = LifecycleRegistry(this) //<< hate this class-wide val
    override fun getLifecycle(): LifecycleRegistry = registry

最佳答案

您不能告诉 Kotlin 编译器接受这种“意外覆盖”的风险,因为在字节码级别会有冲突的构造。你也不能使用@JvmName修改字节码中生成的字段的名称,因为它不适用于委托(delegate),而惰性是委托(delegate)。

关于interface - 不是 Kotlin 中的意外覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46152134/

相关文章:

c# - 在接口(interface)名称中使用 I 作为人称代词

android - Kotlin float ,带 2 位小数到字符串,没有精度损失

reactjs - 我如何在 Kotlin.js 中使用 Redux/React?

android - 在 Android OpenGL ES 上只能看到没有几何图形的 glClear 颜色

java - 自定义对话框构造函数

class - 为什么要在句法层面区分接口(interface)和抽象类?

java - 生命周期 OnLifecycleEvent 已弃用

reflection - 如何在 Kotlin 中检查类型是否是枚举?

c# - Microsoft 命名指南 - 什么是 "private interface members"?

java - 子类/接口(interface)和父类(super class)之间的转换