在Kotlin文档中,他们展示了如何包括类型参数:
class Box<T>(t: T) {
var value = t
}
这是一个简单的示例。但是我遇到了一个看起来像这样的东西:
abstract class SomeAdapter<T, WH: SomeViewHolder>(private val viewModel: SomeModel<T>?) {
}
我该如何解释?我该解释为:
SomeAdapter实例化时有两个参数-T和WH。构造函数使用viewModel。
答案 0 :(得分:0)
您已经参考过,该类具有两种通用类型:T
和WH
。后者确实指定了upper bound SomeViewHolder
,它将仅允许将该上限的子类型用作通用类型WH
。
答案 1 :(得分:0)
由于您的头衔:
了解抽象类中的通用参数
眼前的问题是:如果end
不是抽象的,是否会有所不同(关于泛型类型)。答案是:否。
在此特定示例中,SomeAdapter
可以是T
,而Any?
可以是WH
或SomeAdapter
本身的任何子类(如果SomeAdapter
是不是抽象的。)
SomeAdapter
和T
的类型在编译时是固定的(请参见Type erasure)。
因此,您必须看到泛型,如类型的变量。