从 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......


神不在的星期二
浏览 132回答 1
1回答

慕沐林林

您可以使用此*符号来允许将任何对象添加到数组中。val&nbsp;viewHolderDataBinders&nbsp;=&nbsp;SparseArray<ViewHolderDataBinder<*,&nbsp;*>>()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java