Рефакторинг с Java на Kotlin, возникли проблемы с Generics - PullRequest
1 голос
/ 28 июня 2019

Кто-нибудь может помочь с рефакторингом этого класса для Kotlin, если у него возникли проблемы с общением дженериков

Модель:

abstract class ViewHolderDataBinder<DM : ViewHolderDataModel,
        VH : RecyclerView.ViewHolder>(val viewType: Int) {

    abstract fun createViewHolder(parent: ViewGroup): VH

    abstract fun bindView(model: DM, holder: VH)
}

Java-код, который требуется преобразовать в Kotlin:

SparseArray<ViewHolderDataBinder> viewHolderDataBinders = new SparseArray<>();

И я хочу реорганизовать его в этот

  val viewHolderDataBinders = SparseArray<ViewHolderDataBinder>()

но Kotlin требует добавить параметры типа в ViewHolderDataBinder.

Есть ли способ не добавлять параметр типа, так как это не было необходимо в Java?

ОБНОВЛЕНИЕ

если я использую private val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()

, то при получении ошибки здесь binder.bindView(item, holder)

говорит, что item и holder требуют Nothing, но Found .....

1 Ответ

0 голосов
/ 28 июня 2019

Вы можете использовать этот знак *, чтобы разрешить добавление любого объекта в массив.

val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...