Kotlin 如何避免使用与类型和参数相同的类

Kotlin 如何避免使用与类型和参数相同的类,kotlin,Kotlin,我的项目中有一个BaseActivity,它的工作之一是实例化Acvities的ViewModels。事情是这样的: abstract class BaseActivity<VM : ViewModel>(clazz: KClass<VM>) : AppCompatActivity() { @Inject protected lateinit var viewModelFactory: ViewModelProvider.Factory

我的项目中有一个BaseActivity,它的工作之一是实例化Acvities的ViewModels。事情是这样的:

abstract class BaseActivity<VM : ViewModel>(clazz: KClass<VM>) :
        AppCompatActivity() {

    @Inject
    protected lateinit var viewModelFactory: ViewModelProvider.Factory

    protected val viewModel  by lazy {
        ViewModelProviders
                .of(this, viewModelFactory).get(clazz.java)
    }
}
抽象类基本活动(clazz:KClass):
应用程序活动(){
@注入
受保护的lateinit var viewModelFactory:ViewModelProvider.Factory
由lazy保护的val viewModel{
ViewModelProviders
.of(this,viewModelFactory).get(clazz.java)
}
}
然后MyActivity扩展了它:

class MyActivity : BaseActivity<MyViewModel>(MyViewModel::class) {

    ...

    fun doSomething() {
     viewModel.someMethodSpecifToMyViewModel()
    }
}
class MyActivity:BaseActivity(MyViewModel::class){
...
有趣的事{
viewModel.SomeMethodSpecifyToMyViewModel()
}
}
如您所见,我需要将MyViewModel作为类传递,以便在ViewModelProviders上使用它,但我还需要将其作为类型传递,以便将我的viewModel强制转换为正确的viewModel,并可以使用它自己的方法

这一切都很好,但我必须将MyViewModel传递给BaseActivity两次,这真的让我很烦恼


有没有什么方法可以让我只将其作为一个类型或类进行传递,并且仍然可以让事情正常进行?

当前似乎不可能,请参阅当前似乎不可能,请参阅