Проблема реализации Kotlin MVP с генериками - PullRequest
0 голосов
/ 11 мая 2019

Попытка реализовать простую структуру MVP с Kotlin, вот мои базовые классы:

abstract class BaseActivity<P : BasePresenter<BaseView>> : BaseView, AppCompatActivity() {
//...
}

abstract class BasePresenter<V : BaseView>  {
//...
}

interface BaseView {
//...
}

И пытается использовать эту структуру с

class DummyActivity : BaseActivity<DummyPresenter>(), DummyView.View {
//...
}

class DummyPresenter : BasePresenter<DummyView.View>(), DummyView.UserActionListener {
//...
}

interface DummyView {

interface View : BaseView {
    fun displayLoading()
}

interface UserActionListener {
    fun onButtonClicked()
 }
}

Однако я получаю сообщение об ошибке в DummyActivity, BaseActivity () как:

error

Я предполагаю, что что-то должно быть исправлено в BaseActivity в отношении дженериков, однако я не могу понять, что именно.

Любая помощь приветствуется, Спасибо

1 Ответ

1 голос
/ 11 мая 2019

Первый класс в вашем первом блоке кода должен быть определен как

abstract class BaseActivity<P : BasePresenter<out BaseView>> : BaseView, AppCompatActivity() {
//...
}

Ключ является модификатором out для BaseView.

...