Java代码中的某处有一个类ViewHolder:
public static abstract class ViewHolder {
public final View itemView;
public ViewHolder(View itemView) { this.itemView = itemView; }
....
}
itemView因此,在 Kotlin 中,此类的实例包含type的只读属性View。我想创建一个ViewHolder<V>像这样的通用类:
class MyViewHolder<V : View>(itemView: V) : ViewHolder(itemView) {
override val itemView = super.itemView as V // error: itemView overrides nothing
}
如果我删除override修饰符,则类编译正常,但是当我尝试使用该itemView字段时Overload resolution ambiguity出现错误。
我在这里想要的是使 class 的itemView属性MyViewHolder为 type V,而不是View. 例如,MyViewHolder(TextView(context)).itemView将是一个TextView. 有什么办法可以做到这一点?