【发布时间】:2016-02-26 14:18:52
【问题描述】:
Java 代码中的某处有一个类ViewHolder:
public static abstract class ViewHolder {
public final View itemView;
public ViewHolder(View itemView) { this.itemView = itemView; }
....
}
因此,在 Kotlin 中,此类的实例包含 itemView 类型的只读属性 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 错误。
我在这里想要的是使MyViewHolder 类的itemView 属性为V 类型,而不是View。例如,MyViewHolder(TextView(context)).itemView 将是 TextView。有什么方法可以实现吗?
【问题讨论】:
标签: kotlin java-interop