如何覆盖Kotlin中的Java类的属性?
Java代码中有一个类ViewHolder
:
public static abstract class ViewHolder { public final View itemView; public ViewHolder(View itemView) { this.itemView = itemView; } .... }
所以在这个类的Kotlin实例中包含一个只读types为View
属性itemView
。 我想创建一个generics类ViewHolder
像这样:
class MyViewHolder(itemView: V) : ViewHolder(itemView) { override val itemView = super.itemView as V // error: itemView overrides nothing }
如果我删除override
修饰符类编译确定,但是当我尝试使用itemView
字段时,我得到Overload resolution ambiguity
错误。
我想在这里是使MyViewHolder
类的MyViewHolder
属性是typesV
,而不是View
。 因此,例如, MyViewHolder(TextView(context)).itemView
将是一个TextView
。 有没有办法做到这一点?
你的例子中的Java类有一个字段,而不是一个属性。 在Java中访问字段的代码总是引用特定的类名,并且无法在Java或Kotlin中重写另一个类中的字段。
您可以使用不同的名称创建自己的属性,该属性会将字段强制转换为您需要的types。