java - 从 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
......
解决方案
您可以使用此*
标志来允许将任何对象添加到数组中。
val viewHolderDataBinders = SparseArray<ViewHolderDataBinder<*, *>>()
推荐阅读
- regex - 使用 RegexBasedLocationExtractionStrategy 定位字符串并使用 iTextSharp 的 PDFstamper 标记图像。标记所有位置的问题
- android - api 一个接一个地调用第一个 Api 响应的基础
- database - Eloquent 模型 - 关系用户类别和帐户处理
- c# - 使用引用项目中已有程序集的 dll
- javascript - 尝试设置 3 个不同的 ngIf 在不同的点击时打开
- python - 在 IPython 中运行 %%cython-magic 单元时,CompileError/LinkerError: "command 'gcc' failed with exit status 1" 是什么意思
- mongodb - 按日期过滤命名键
- javascript - 使用 React 钩子从另一个页面使用 useEffect 更新状态
- postgresql - Postgres:查找给定用户的 search_path 并永久修改它
- asp.net - 调用另一个控件后,我需要将焦点设置到调用控件