Перекрестная ссылка с привязкой абстрактных классов - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть 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.element = this компилятор говорит

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

Как я могу решить это? Равный код в Java отлично работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...