首页 > 解决方案 > 从 Java 重构到 Kotlin,遇到泛型问题

问题描述

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

它这么说item并且holder需要Nothing但是Found......

标签: javaandroidkotlin

解决方案


您可以使用此*标志来允许将任何对象添加到数组中。

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

推荐阅读