У меня есть следующая подпись класса:
abstract class BaseActivity<E : ViewModel> : AppCompatActivity() {
protected lateinit var viewModel: E
}
Теперь я хочу инициализировать мою viewModel универсальным способом, используя ViewModelProvider, поэтому:
viewModel = ViewModelProviders.of(this, viewModelFactory)
.get(MyViewModel::class)
Учитывая, что класс MyViewModel будетв обобщенном типе я бы сказал, что это потенциально может быть абстрагировано в BaseActivity, поэтому мне не нужно делать это для каждого расширяющего его действия.
Я пытался использовать:
inline fun <reified E : ViewModel> getViewModelClass() = E::class.java
Но тогда при выполнении:
viewModel = ViewModelProviders.of(this, viewModelFactory)
.get(getViewModelClass())
Я получаю Cannot use E as reified type paramter. Use class instead
Есть ли решение для этого?