首页 > 解决方案 > 与抽象类绑定的交叉引用

问题描述

我有 2 个抽象类

abstract class Element<E : Element<E, S>, S : Snapshot<S, E>> {

    var snapshot: S

    init {
        snapshot = ((this.javaClass.getGenericSuperclass() as 
            ParameterizedType).actualTypeArguments[0] as Class<S>).newInstance()
        snapshot.element = this
// This is solution        snapshot.element = this as E
    }
}


abstract class Snapshot<S : Snapshot<S, E>, E : Element<E, S>>{
    lateinit var element: E
}

我想通过初始化来绑定两者Element

每个元素只有一个 Snapshot 并且 Snapshot 可以访问 Element

但是由snapshot.element = this编译器说

Type mismatch.
Required: E
Found: Element<E, S>

我该如何解决?Java 中的相等代码完美运行

标签: kotlin

解决方案


推荐阅读