简体   繁体   English

通用kotlin里面的通用

[英]Generic inside a generic kotlin

I have some abstract class BaseViewModel , BaseActivity . 我有一些抽象类BaseViewModelBaseActivity

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

My purpose using N to pass as an interface into it, and when any viewModel extends to BaseViewModel , just pass its navigator into. 我的目的是使用N作为接口传递给它,当任何viewModel扩展到BaseViewModel ,只需将其导航器传递给。

But I got a problem when write BaseActivity . 但是在编写BaseActivity时遇到了问题。

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

what it should be? 应该是什么?

You mean like this? 你的意思是这样的?

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

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

interface Test

You can make it even more protected, if you extend from base interface: 如果从基本接口扩展,则可以使其更受保护:

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

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

interface Test:BaseTest

interface BaseTest

In that case, if you interface doesn't inherit generic's parent class, compiler will give you an error of compilation. 在这种情况下,如果您的接口没有继承泛型的父类,编译器将给您一个编译错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM