Kotlin 实现接口并将参数更改为特定对象类型
我想实现一个接口,并将Kotlin 实现接口并将参数更改为特定对象类型,kotlin,interface,Kotlin,Interface,我想实现一个接口,并将create(any:any)函数中的参数更改为create(benefitModel:benefitModel),在实现接口的BenefitStore-类中这不起作用,我收到以下错误消息: “类'BenefitStore'不是抽象的,并且不实现抽象成员公共抽象乐趣创建(O:Any).” 我解决这个问题的最好办法是什么 StoreInterface.kt 您可以将StoreInterface定义为泛型 我还冒昧地删除了它上面多余的…接口,它不是惯用的 interface S
create(any:any)
函数中的参数更改为create(benefitModel:benefitModel)
,在实现接口的BenefitStore
-类中这不起作用,我收到以下错误消息:
“
类'BenefitStore'不是抽象的,并且不实现抽象成员公共抽象乐趣创建(O:Any).
”我解决这个问题的最好办法是什么 StoreInterface.kt
您可以将
StoreInterface
定义为泛型
我还冒昧地删除了它上面多余的…接口
,它不是惯用的
interface Store<T> {
fun findAll(): List<T>
fun create(arg : T)
fun update(arg: T)
fun delete(arg: T)
}
因此,在这种情况下,
Store
将仅与BenefitModel
s一起使用。而BenefitStore
中覆盖的来自Store
的所有函数都需要BenefitModel
实例。谢谢,这回答了我的问题!为了澄清为什么不能使用上面定义的接口:实现接口时说“这个类可以做所有这些事情”。在这种情况下,这意味着您可以调用create(“ABC”)
或create(1)
或使用任何其他(非null)参数。但是上面的类不允许这样做,所以它没有完全实现接口。您需要扩展类的功能,或者(正如Todd所演示的)减少接口的需求。感谢您的澄清!
class BenefitStore: StoreInterface, AnkoLogger {
override fun create(benefitModel: BenefitModel) {
...
}
interface Store<T> {
fun findAll(): List<T>
fun create(arg : T)
fun update(arg: T)
fun delete(arg: T)
}
class BenefitStore: Store<BenefitModel>, AnkoLogger {
override fun create(arg: BenefitModel) {
//...
}
}