Использование подклассов с RxJava Observable - PullRequest
0 голосов
/ 25 марта 2019

Я сталкиваюсь с ошибкой со следующим кодом:

interface A1 {
    val string: String
}

data class A2(override var string: String = "") : A1

interface Test {
    fun f(): Observable<List<A1>>
}

fun func(): Observable<List<A2>> = return ...

class TestImpl : Test{
    override fun f(): Observable<List<A1>> = func()
}

Несоответствие типов в последней строке кода.Как изменить это, чтобы иметь правильное объявление, если это вообще возможно?

1 Ответ

3 голосов
/ 25 марта 2019

Вы можете обобщить ваш интерфейс следующим образом:

interface Test<T: A1> {
    fun f(): Observable<List<T>>
}

Затем реализовать его следующим образом:

class TestImpl : Test<A2> {
    override fun f(): Observable<List<A2>> = func()
}
...