我是从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
}
}
这样做的问题是,BaseViewModelFactory
中定义的T
类型被视为与create
函数中定义的类型不同的类型,因此最终需要该as T
强制转换。有没有办法避免这种情况,并将外部T
类型强制为内部T
函数类型?
发布于 2018-08-02 09:51:24
您意外地在create
函数的声明中重新声明了类型参数T
。删除<T : ViewModel?>
,以便函数中的T
引用在类定义中声明的T
。
https://stackoverflow.com/questions/51650358
复制相似问题