类签名是RecyclerView.Adapter <“ VH扩展 android.support.v7.widget.RecyclerView.ViewHolder“>。VH类型为 受RecyclerView.ViewHolder限制。
由于RecyclerView.ViewHolder
是抽象类,因此RecyclerView.ViewHolder
继承了VH的任何实例。
例如,onCreateViewHolder
方法返回通用的VH类型对象,该对象在任何情况下均从RecyclerView.ViewHolder
继承。那么,为什么不仅仅将RecyclerView.ViewHolder
作为返回类型(而不是VH泛型类型)并使所有这些东西都没有泛型呢?
答案 0 :(得分:1)
因为您希望RecyclerView.Adapter
的子类仅处理特定的ViewHolder
类型。
这就是为什么类签名允许您指定VH
类型的原因。这样一来,您可以根据自己的需要对课程进行建模;方法onBindViewHolder
,onCreateViewHolder
将被修改为仅处理您首选的ViewHolder
子类型。
没有泛型,(上述方法将具有ViewHolder
而不是泛型VH
类型),则可以从SubViewHolder1
返回onCreateViewHolder
并尝试强制转换第一个onBindViewHolder
到SubViewHolder2
的参数(您将得到ClassCastException
)。不是说您会这样做,而是代码允许您这样做。那么,为什么不设置一些可以缓解您生活压力的约束条件呢?
利用泛型类型,您说的是:
这是我的
Adapter
的{{1}}。此RecyclerView
仅处理此Adapter
子类。没什么。