java - 从 Java 重构到 Kotlin,遇到泛型问题

标签 java android 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)

它说itemholder需要Nothing但是Found ......

最佳答案

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

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

关于java - 从 Java 重构到 Kotlin,遇到泛型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804808/

相关文章:

java - 两个 TextView 导致一个 Activity

java - 更新 JFrame 中的 JPanel

kotlin - 从方法访问委托(delegate)对象

sorting - 如何按 Kotlin 中的值对 LinkedHashMap 进行排序?

Android - 100% 的时间未收到发送短信的 Intent

java - 如何使用zip4j和outputstream压缩文件夹和子文件夹

java - 如何在 ScrollView 中将按钮(小部件)保留在屏幕中?

java - 在 Java 中导入对象 (Eclipse)

java - 如何在Android中设置布局的宽度?

android - 为什么 Android 使用多个上下文并且每个上下文都不同?