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