不能使用 'VM' 作为具体化的类型参数。使用 class 代替

Cannot use 'VM' as reified type parameter. Use a class instead

所以之前这段代码运行良好 (2.0.1)。

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

    protected val viewModel: VM by viewModel(clazz)

然后我将 Koin 更新为 2.2.2,现在它无法编译此代码:

Cannot use 'VM' as reified type parameter. Use a class instead.

好像没有这样的替代功能了。

所以另一种解决方案是这样的:

基本视图模型activity(或片段)

abstract class ActivityBaseViewModel<out VM : ViewModel> : AppCompatActivity() {

    protected abstract val viewModel: VM

    ...
}

然后在特定的activity(或片段)中:

class MainActivity : ActivityBaseViewModel<MainActivityViewModel>() {

    override val viewModel: MainActivityViewModel by viewModel()
    
    ...
}