问题描述
此代码段总结了问题:
interface FruitRepository : CoroutineCrudRepository<Fruit,Long>,FruitRepositoryCustomization
interface FruitRepositoryCustomization {
suspend fun findById(id: Long): Fruit?
}
class FruitRepositoryCustomizationImpl() : FruitRepositoryCustomization {
override suspend fun findById(id: Long): Fruit? = error("This will never happen,though it should")
}
interface TreeRepository : CoroutineCrudRepository<Tree,TreeRepositoryCustomization<Long>
interface TreeRepositoryCustomization<ID> {
suspend fun findById(id: ID): Tree?
}
class TreeRepositoryCustomizationImpl : TreeRepositoryCustomization<Long> {
override suspend fun findById(id: Long): Tree? = error("This will happen,as expected")
}
docs指出:
自定义实现的优先级高于基础实现 实施和存储库方面。此顺序使您可以覆盖 基本存储库和方面方法,并解决两个歧义 片段贡献相同的方法签名。
A test显示,仅当替代的参数类型通过泛型可用于自定义实现时,才会发生替代。没有泛型的匹配签名不会导致覆盖。
我不确定这是预期的行为还是错误/可以改善的问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)