实现接口并将参数更改为特定的对象类型
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
。来自 Store
的 BenefitStore
中覆盖的所有函数将需要 BenefitModel
个实例。
我想实现一个接口,把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
。来自 Store
的 BenefitStore
中覆盖的所有函数将需要 BenefitModel
个实例。