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
. 有什么办法可以做到这一点?