抱歉没有具体的标题,我真的不知道如何更好地命名.
我有以下示例:
class User
interface Repository<T, ID>
interface UserRepository : Repository<User, Long>
abstract class RepositoryTest<T, ID> {
abstract var repository: Repository<T, ID>
}
class UserRepositoryTest : RepositoryTest<User, Long>() {
//Error: Var-property type is "UserRepository", which is not a type of overriden
lateinit override var repository: UserRepository
}
Run Code Online (Sandbox Code Playgroud)
我需要这个架构进行数据库测试.Repository有插入,保存,删除等方法.我想使用这个抽象RepositoryTest来删除所有条目并在每次测试之前插入所需的数据.在UserRepositoryTest我要指定库为UserRepository(它是一个孩子Repository),但我拿本例中提到的错误.
为什么它会给我错误?我以为我可以通过子类型.
repository是一个var领域.既然UserRepositoryTest可以称为RepositoryTest<User, Long>,您应该能够分配Repository<User, Long>到该repository字段.但是,它不一定UserRepository是错误.
更改repository到val在RepositoryTest类应该修复它.
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |