【发布时间】:2020-06-10 21:13:11
【问题描述】:
我有以下情况:
- 抽象的泛型类
abstract class K<T> {
abstract fun bind(itemModel: T)
}
- 从
K扩展的类
class A : K<ModelA> {
override fun bind(itemModel: ModelA) {
// ... do anything
}
}
class B : K<ModelB> {
override fun bind(itemModel: ModelB) {
// ... do anything
}
}
- 另一个类,这是一个根据某些参数返回 K 子类型的工厂:
class Factory {
companion object {
const val TYPE_A: Int = 0
const val TYPE_B: Int = 1
fun create(type: Int): K {
return when (type) {
TYPE_A -> A()
TYPE_B -> B()
}
}
}
}
此时,Factory.create 方法的返回类型部分出现错误,它显示:“类 Kcreate 方法中返回 K 的子类型,这是唯一重要的事情,而不是泛型的特定类型。
这在 Java 中是可能的。 Kotlin 中的正确方法是什么?
【问题讨论】:
标签: java kotlin generics hierarchy