我有Java介面

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),而lazy是委托(delegate)。

10-04 10:32