在kotlin中扩展时类所需的类型参数

时间:2018-05-28 12:35:16

标签: android generics kotlin

所以我的问题很简单, 在java中如果我有这样的基类:

BaseViewModel.Java

public abstract class BaseViewModel<N> extends ViewModel {

我可以将这个类扩展到其他类而不定义泛型参数N,如下所示:

public class BaseFragment<V extends BaseViewModel> { //this is fine

但是kotlin在这种方法中引发了错误,要求使用通用定义。

class BaseFragment<V: BaseViewModel>: Fragment() {// one type argument expected

如何避免这种情况?

1 个答案:

答案 0 :(得分:3)

Kotlin不允许像Java那样使用原始类型。因此,您必须为V : BaseViewModel指定一些类型:

class BaseFragment<V: BaseViewModel<Any>>: Fragment() {

它等同于您的Java代码,因为V extends BaseViewModel基本上意味着V extends BaseViewModel<Object>