了解抽象类中的通用参数

时间:2019-01-08 11:33:27

标签: kotlin

在Kotlin文档中,他们展示了如何包括类型参数:

class Box<T>(t: T) {
    var value = t
}

这是一个简单的示例。但是我遇到了一个看起来像这样的东西:

abstract class SomeAdapter<T, WH: SomeViewHolder>(private val viewModel: SomeModel<T>?) {

}

我该如何解释?我该解释为:

  

SomeAdapter实例化时有两个参数-T和WH。构造函数使用viewModel。

2 个答案:

答案 0 :(得分:0)

您已经参考过,该类具有两种通用类型:TWH。后者确实指定了upper bound SomeViewHolder,它将仅允许将该上限的子类型用作通用类型WH

答案 1 :(得分:0)

由于您的头衔:

  

了解抽象类中的通用参数

眼前的问题是:如果end不是抽象的,是否会有所不同(关于泛型类型)。答案是:否。

在此特定示例中,SomeAdapter可以是T,而Any?可以是WHSomeAdapter本身的任何子类(如果SomeAdapter是不是抽象的。)

SomeAdapterT的类型在编译时是固定的(请参见Type erasure)。

因此,您必须看到泛型,如类型的变量。