不能使用 '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()
...
}
所以之前这段代码运行良好 (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()
...
}