Android中的ViewModelProviderFactory在kotlin中

我正在试验来自Google的架构组件 。 具体来说,我想实现一个ViewModelProvider.Factory来创建一个ViewModel,它需要构造函数参数,如下所示:

class MyFactory(val handler: Handler) : ViewModelProvider.Factory { override fun <T : ViewModel?> create(modelClass: Class<T>?): T { return MyViewModel(handler) as T } } 

我的ViewModel看起来像这样:

 class MyViewModel(val handler: Handler) : ViewModel() 

任何人都知道如何避免讨厌的演员:

 return MyViewModel(handler) as T 

你可以写:

 class MyFactory(val handler: Handler) : ViewModelProvider.Factory { override fun <T : ViewModel> create(modelClass: Class<T>): T { return modelClass.getConstructor(Handler::class.java).newInstance(handler) } } 

这将与接受Handler作为构造函数参数的任何类一起使用,如果类没有正确的构造函数,将抛出NoSuchMethodException