实现接口并将参数更改为特定的对象类型

Implement interface and change parameter to specific object-type

我想实现一个接口,把create(any : Any)函数中的参数改成实现接口的BenefitStore-class中的create(benefitModel : BenefitModel)
这不起作用,我收到以下错误消息:
Class 'BenefitStore' is not abstract and does not implement abstract member public abstract fun create(O: Any)...”.

我解决这个问题的最佳方法是什么?

StoreInterface.kt

interface StoreInterface {
    fun findAll(): List<Any>
    fun create(any : Any)
    fun update(any: Any)
    fun delete(any: Any)
}

BenefitStore.kt

class BenefitStore: StoreInterface, AnkoLogger {

override fun create(benefitModel: BenefitModel) {
...
}

您可以将 StoreInterface 定义为通用。

我还冒昧地删除了上面多余的 ...Interface,这不是惯用语。

interface Store<T> {
    fun findAll(): List<T>
    fun create(arg : T)
    fun update(arg: T)
    fun delete(arg: T)
}

通过使用泛型,您告诉 Kotlin T 是一个占位符类型,将由实现接口的 class 指定:

class BenefitStore: Store<BenefitModel>, AnkoLogger {

    override fun create(arg: BenefitModel) {
        //...
    }
}

因此在这种情况下,Store 将仅适用于 BenefitModel。来自 StoreBenefitStore 中覆盖的所有函数将需要 BenefitModel 个实例。