Ошибка после преобразования Java в Kotlin в Android - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в 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>

}}

Что не так с кодом?

1 Ответ

0 голосов
/ 04 мая 2020

Интересно, это то, чего ты хочешь достичь? Глядя на ваш код, я думаю, что вы хотите указать, что BaseAdapter<T extends BaseModel> не BaseAdapter<T extends RecyclerView.ViewHolder >.

Примечание: я согласен с комментарием @ Tenfour04 - ваш код Java содержит необработанные типы. Посмотрите, как ваш параметр конструктора здесь public BaseViewHolder(View view,BaseAdapter adapter) содержит BaseAdapter без универсального типа, как в 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)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...