Kotlin-扩展泛型类并返回子类型的问题

问题描述 投票:0回答:1

我有以下情况:

  • 抽象的通用类
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方法的返回类型部分中遇到错误,它说:“类K 应该有一个类型参数”。显然,我正在尝试在create方法中返回K的子类型,这是唯一重要的事情,而不是泛型的特定类型。

这在Java中是可能的。 Kotlin的正确方法是什么?

java kotlin generics hierarchy
1个回答
1
投票

这里有很多要改进的地方。

© www.soinside.com 2019 - 2024. All rights reserved.