通用Kotlin内的通用

时间:2019-06-05 03:51:21

标签: android generics mvvm kotlin

我有一些抽象类BaseViewModelBaseActivity

abstract class BaseViewModel<N> : ViewModel(){}

我的目的是使用 N 作为接口传递给它,并且当任何viewModel扩展到BaseViewModel时,只需将其导航器传递给它即可。

但是写BaseActivity时遇到问题。

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<???>> : AppCompatActivity() {}

应该是什么?

1 个答案:

答案 0 :(得分:0)

您的意思是这样吗?

abstract class BaseViewModel<N> : ViewModel(){}

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<Test>> : AppCompatActivity() {}

interface Test

如果从基本界面扩展,则可以使其受到更多保护:

abstract class BaseViewModel<N:BaseTest> : ViewModel(){}

abstract class BaseActivity<T : ViewDataBinding,V: BaseViewModel<Test>> : AppCompatActivity() {}

interface Test:BaseTest

interface BaseTest

在这种情况下,如果您的接口不继承泛型的父类,则编译器会给您一个编译错误。