任何人都可以帮助将此类重构为 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
......
最佳答案
您可以使用此*
符号来允许将任何对象添加到数组中。
val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()
关于java - 从 Java 重构到 Kotlin,遇到泛型问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804808/