Kotlin使用子类型覆盖乐趣

nsL

我在继承包含基本类型的方法/乐趣的接口时遇到麻烦,我想在实现它的类中将其重写为子类型。

到目前为止,我有界面

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

    }
}

无需投放。我想我做不到,因为它修改了乐趣的签名,使其不是真正的替代。我尝试使用泛型和泛型约束,但是没有运气:

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

但它不起作用。有什么解决办法吗?

Fal

这个怎么样?

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

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

    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

覆盖使用子类型的方法

Kotlin乐趣中类型推断失败

Kotlin:在子类型中覆盖泛型属性

Kotlin:使用特定类型的子类创建ArrayList

Android Kotlin 错误:“返回类型是‘单元’,它不是被覆盖的子类型”

Kotlin:如何将作为集合的类变量覆盖为子类型的集合

如何从泛型类型扩展并使用子类覆盖方法参数类型

为什么不允许子类使用派生类型覆盖超类属性?

Kotlin覆盖超类型变量

如何在Kotlin中使用返回带有类型参数的子类型的方法创建类?

Kotlin高阶函数参数:传递子类型

Kotlin有什么不是Any的子类型

使用子类分配Kotlin var

如何使用当前父级Scope在“悬浮乐趣”中启动Kotlin协程?

如何在带有Kotlin的Retrofit 2.6.0协程中正确使用暂停乐趣

开始使用 kotlin 和 SpringBootApplication 来运行一些暂停的乐趣

在子类中使用 @property 覆盖字典属性

允许子类使用函数属性或方法覆盖

Coq:使用子类型卡住

关于为什么我不能通过其子类型覆盖使用通用类参数的方法的说明

自动覆盖 TypeScript 子类中多个函数的返回类型

Python:如何覆盖子类中实例属性的类型提示?

具有子类作为参数类型的Scala覆盖方法

覆盖Java Android中子类中的属性类型

覆盖下标,返回子类中的协变类型

多态变体上的通配符模式覆盖子类型约束

联合类型-使用|允许不同的子类型

类型名称或子类型名称的无效使用

Kotlin类型,子类型和超类型与类,子类和超类