任何人都可以帮助将此类重构为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)
}


想要转换成Kotlin的Java代码:

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


我想将其重构为

  val viewHolderDataBinders = SparseArray<ViewHolderDataBinder>()


但是Kotlin要求在ViewHolderDataBinder中添加类型参数。

有什么方法可以不添加类型参数,因为在Java中这是没有必要的?

更新

如果我使用private val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()

然后在这里出现错误binder.bindView(item, holder)

它说itemholder需要NothingFound .....

最佳答案

您可以使用此*符号将任何对象添加到数组中。

val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()

10-07 20:39