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
version
2.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