Универсальный внутри общего котлин - PullRequest
0 голосов
/ 05 июня 2019

У меня есть какой-то абстрактный класс BaseViewModel, BaseActivity.

abstract class BaseViewModel<N> : ViewModel(){}

Моя цель - использовать N для передачи в качестве интерфейса в него, а когда любой viewModel расширяется до BaseViewModel, просто передайте его навигатор в.

Но у меня возникла проблема при записи BaseActivity.

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<???>> : AppCompatActivity() {}

что это должно быть?

1 Ответ

0 голосов
/ 05 июня 2019

Вы имеете в виду, как это?

abstract class BaseViewModel<N> : ViewModel(){}

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<Test>> : AppCompatActivity() {}

interface Test

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

abstract class BaseViewModel<N:BaseTest> : ViewModel(){}

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<Test>> : AppCompatActivity() {}

interface Test:BaseTest

interface BaseTest

В этом случае, если ваш интерфейс не 't наследуя родительский класс generic, компилятор выдаст вам ошибку компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...