我在继承包含基本类型的方法/乐趣的接口时遇到麻烦,我想在实现它的类中将其重写为子类型。
到目前为止,我有界面
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)
}
但它不起作用。有什么解决办法吗?
这个怎么样?
interface IModel<T : BaseDataModel> {
fun convert(dataModel: T)
}
class SettingsModel: IModel<SettingsDataModel> {
override fun convert(dataModel: SettingsDataModel) {
// Conversion of models here
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句