Kotlin путаница в смешении дженериков и наследования - PullRequest
0 голосов
/ 02 февраля 2020
    abstract class Human

    class Alien : Human()

    abstract class Foo<T>() {
        abstract fun foo(): T
    }

    class Too<Human>() : Foo<Human>() {
        override fun foo(): Human {
            return Alien()
        }
    }

Class Too () является подклассом абстрактного класса Foo (), который дает T тип Human. Я хотел бы иметь возможность вернуть подкласс Human () (Alien () в этом примере) из foo (), однако я получаю ошибку несоответствия типов. Есть ли способ преодолеть это?

1 Ответ

1 голос
/ 02 февраля 2020

Измените это так:

abstract class Human

class Alien : Human()

abstract class Foo<T>() {
    abstract fun foo(): T
}

class Too : Foo<Human>() {
    override fun foo(): Human {
        return Alien()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...