特定のタイトルではないことを申し訳ありません。
私は、次の例があります。プロパティの型はオーバーライドされた型ではありません
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
}
は、私は、データベースのテストのために、このアーキテクチャを必要としています。 Repository
にはinsert、save、deleteなどのメソッドがあります。RepositoryTest
でこの抽象化を使用して、すべてのエントリを削除し、各テストの前に必要なデータを挿入します。 UserRepositoryTest
私はUserRepository
(それはRepository
の子です)としてリポジトリを指定したいと思いますが、この例ではエラーが発生します。
なぜ私にエラーが出るのですか?私はサブタイプの型を渡すことができると思った。