Kotlin 对混合泛型和继承感到困惑


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()
}
}

类 Too(( 是抽象类 Foo(( 的一个子类,它赋予 T 类型 Human。我希望能够从 foo(( 返回 Human(((在本例中为 Alien(((的子类,但是我遇到了类型不匹配错误。有什么办法可以克服这个问题吗?

像这样更改它:

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

最新更新