我从ViewModelProvider.Factory
开始扩展,因此我需要覆盖fun <T : ViewModel?> create(modelClass: Class<T>): T
。我想从类外部强制执行此T类型,在初始化工厂时将其传递给类。我的想法是要有这样的东西:
class BaseViewModelFactory<T>(val creator: () -> T) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
val gearSearchViewModel: T = creator() as T
return gearSearchViewModel
}
}
问题在于,将T
中定义的BaseViewModelFactory
类型与create
函数中定义的类型不同,因此需要使用{{1 }}最后投放。是否有办法避免这种情况,并将外部as T
类型强制为内部T
函数类型?
答案 0 :(得分:0)
您不小心在T
函数的声明中重新声明了类型参数create
。删除<T : ViewModel?>
,以便函数中的T
引用类定义中声明的T
。