gpt4 book ai didi

generics - Kotlin 用子类型覆盖 fun

转载 作者:行者123 更新时间:2023-12-02 12:18:39 25 4
gpt4 key购买 nike

我无法继承包含基类型的方法/乐趣的接口(interface),我想在实现它的类中将其重写为子类型。

到目前为止我有界面

interface IModel {
fun convert(dataModel: BaseDataModel)
}

以及实现它的类:
class SettingsModel: IModel {
override fun convert(dataModel: BaseDataModel) {
// Conversion of models here

}
}

我也有 SettingsDataModel 这是:
class SettingsDataModel: BaseDataModel() {
}

我想要实现的是每个实现 IModel 的类/模型,能够获得特定的 DataModel,例如:
class SettingsModel: IModel {
override fun convert(dataModel: SettingsDataModel) {
// Conversion of models here

}
}

无需转换它。我想我不能,因为它修改了乐趣的签名,使其不是真正的覆盖。我尝试使用泛型和 generic constraints但没有运气:
interface IModel {
fun <T :BaseDataModel>convert(dataModel: T)
}

但它不工作。有什么解决方法吗?

最佳答案

这个怎么样?

interface IModel<T : BaseDataModel> {
fun convert(dataModel: T)
}

class SettingsModel: IModel<SettingsDataModel> {
override fun convert(dataModel: SettingsDataModel) {
// Conversion of models here

}
}

关于generics - Kotlin 用子类型覆盖 fun,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46104233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com