【发布时间】:2019-09-02 22:44:16
【问题描述】:
我想从基类继承一个函数,并希望它的参数匹配某个类,该类会根据继承的类发生变化,例如
基类
abstract class BaseList {
abstract fun <T : BaseItem> addItem(item: T)
}
继承的类
class SupermarketList : BaseList() {
override fun <T : BaseItem> addItem(item: T) {
}
}
我想将继承类中的类型BaseItem更改为基于该类的另一种类型。例如,将其更改为Supermarket item,如下所示:
class SupermarketList : BaseList() {
override fun <T : SupermarketItem> addItem(item: T) {
}
}
注意Supermarket 项。
我不确定泛型是这里最好的方法;它应该实现一个接口吗?有没有其他方法可以做到这一点,例如根据类为函数实现一个参数?
需要明确的是,上面的代码是有效的,但在我看来这是一种不好的做法。如果我错误地将另一个类型传递给函数,而不是我想要的类型,会发生什么情况,这也是 BaseItem 的子类型,所以它被接受了?
【问题讨论】:
标签: generics inheritance kotlin