【发布时间】:2018-06-04 09:12:42
【问题描述】:
我有以下类签名:
abstract class BaseActivity<E : ViewModel> : AppCompatActivity() {
protected lateinit var viewModel: E
}
现在我想使用 ViewModelProvider 以通用方式初始化我的 viewModel,所以:
viewModel = ViewModelProviders.of(this, viewModelFactory)
.get(MyViewModel::class)
鉴于 MyViewModel 类将以泛型类型提供,我想说这可能会被抽象到 BaseActivity 中,因此我不必为扩展它的每个 Activity 都这样做。
我试过了:
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
有解决办法吗?
【问题讨论】: