簡體   English   中英

如何在Kotlin中覆蓋Java類的屬性?

[英]How to override properties of java classes in Kotlin?

Java代碼中的某個地方有一個ViewHolder類:

public static abstract class ViewHolder {
    public final View itemView;
    public ViewHolder(View itemView) { this.itemView = itemView; }
    ....
}

因此,在Kotlin中,此類的實例包含View類型的只讀屬性itemView 我想創建一個通用類ViewHolder<V>如下所示:

class MyViewHolder<V : View>(itemView: V) : ViewHolder(itemView) {
     override val itemView = super.itemView as V // error: itemView overrides nothing
}

而且,如果我刪除了override修飾符,則該類將編譯為OK,但是當我嘗試使用itemView字段時,會出現Overload resolution ambiguity錯誤。

我想在這里是使itemView的屬性MyViewHolder類為類型V ,不View 因此,例如, MyViewHolder(TextView(context)).itemView將是TextView 有什么辦法可以做到這一點?

您的示例中的Java類具有一個字段,而不是一個屬性。 訪問Java中的字段的代碼始終引用特定的類名,並且無法覆蓋Java或Kotlin中另一個類中的字段。

您可以使用不同的名稱創建自己的屬性,該屬性將把字段的值返回為所需的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM