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) {
        //...
    }
}