Kotlin类不实现接口方法,但抽象类实现方法
我正在使用Kotlin类不实现接口方法,但抽象类实现方法,kotlin,spring-data,Kotlin,Spring Data,我正在使用spring-bootversion2.1.9和spring-data。我已经定义了一个存储库 interface TokenRepository : CrudRepository<Token, Long> { fun findBySubject(subject: String): Token? } 现在,当我创建TokenRepository的实现时,它扩展了RepositoryFake class TokenRepositoryFake : Reposito
spring-boot
version2.1.9
和spring-data
。我已经定义了一个存储库
interface TokenRepository : CrudRepository<Token, Long> {
fun findBySubject(subject: String): Token?
}
现在,当我创建TokenRepository
的实现时,它扩展了RepositoryFake
class TokenRepositoryFake : RepositoryFake<Token>(), TokenRepository {
override fun findBySubject(subject: String): Token? {
...
}
}
类TokenRepositoryFake:RepositoryFake(),TokenRepository{
覆盖findBySubject(主题:字符串):令牌{
...
}
}
编译器抱怨TokenRepositoryFake
不是抽象的,它没有实现方法existsById
、deleteById
和findById
,尽管这些方法在RepositoryFake
中实现。它并不抱怨crudepository
中定义的其他方法。为什么编译器抱怨缺少方法而不是所有其他方法
错误消息的一个示例:
类“TokenRepositoryFake”不是抽象的,并且没有实现抽象成员public abstract fun deleteById(p0:Long):在my.repositories.TokenRepository中定义的单元
我想我发现了这个问题。如果我将RepositoryFake
的类型更改为
abstract class RepositoryFake<T, ID> : CrudRepository<T, ID>
class HDChainRepositoryFake : RepositoryFake<HDChain, Long>(), HDChainRepository
万事俱备。我假设这与kotlin处理泛型的方式有关,但不知道确切原因
class HDChainRepositoryFake : RepositoryFake<HDChain, Long>(), HDChainRepository