[英]Error after converting Java to Kotlin in Android
我是 Kotlin 的新手,我轉換了 java 中的一些代碼並陷入了一個錯誤。
這是代碼
Java 代碼:
public abstract class BaseViewHolder<T extends BaseModel> extends RecyclerView.ViewHolder {
public T model;
public BaseViewHolder(View view,BaseAdapter adapter) {
super(view);
adapter.select(BaseViewHolder.this);
}
}
public abstract class BaseAdapter<T extends RecyclerView.ViewHolder > extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public void select(BaseViewHolder holder) { }
}
Kotlin 代碼:
abstract class BaseAdapter<T : RecyclerView.ViewHolder> : RecyclerView.Adapter<RecyclerView.ViewHolder>{
fun select(holder: BaseViewHolder<BaseModel>) {
}
}
abstract class BaseViewHolder<T : BaseModel?> : RecyclerView.ViewHolder {
@JvmField
var model: T? = null
constructor(view: View, adapter: BaseAdapter<RecyclerView.ViewHolder>?) : super(view) {
adapter.select(this@BaseViewHolder)
/// ERROR IS HERE type mismatch required BaseViewHolder<BaseModel> found BaseViewHolder<T>
}}
代碼有什么問題?
我想知道這是否是您想要實現的目標。 查看您的代碼,我認為您想指定BaseAdapter<T extends BaseModel>
而不是BaseAdapter<T extends RecyclerView.ViewHolder >
。
注意:我同意 @Tenfour04 的評論 - 您的 Java 代碼包含原始類型。 看看這里的構造函數參數public BaseViewHolder(View view,BaseAdapter adapter)
如何包含一個BaseAdapter
沒有 generics 類型,如BaseAdapter<TYPE_GOES_HERE>
。
abstract class BaseAdapter<T : BaseModel> : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
fun select(holder: BaseViewHolder<T>) {
}
}
abstract class BaseViewHolder<T : BaseModel> : RecyclerView.ViewHolder {
@JvmField
var model: T? = null
constructor(view: View, adapter: BaseAdapter<T>) : super(view) {
adapter.select(this@BaseViewHolder)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.