1
public static abstract class ViewHolder<T> extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
public abstract void bindItem(T item);
}
有沒有辦法確保bindItem(T item)
參數T恰好是T而不是Object? (由於類型擦除替換對象方法的參數類型T,因爲它是無限的。)適用於方法參數的通用類型 - 避免類型擦除
更新 - 意外原始類型的使用
這是我結束了實現抽象類:
static class EventHolder extends ViewHolder {
@Override
public void bindItem(Object item) {
}
}
導致bindItem
參數類型爲Object
,因爲ViewHolder的raw type已被分類。
本來應該
static class EventHolder extends ViewHolder<Event> {
@Override
public void bindItem(Event item) {
}
}
迫使正確的參數類型。
對不起。深夜編碼=愚蠢的錯誤。
你想解決什麼問題?總會有類型刪除。你只會得到編譯時間檢查。 –
任何嘗試使用非'T'參數調用'bindItem'都會導致編譯器錯誤。這不是你想要的嗎? –
您是否因爲擴展原始類型而在第一個'EventHolder'上發出警告? – newacct