我有这个片段:
-
然后我在此使用它:
+
但是我收到了这个错误:
class RecyclerViewAdapter internal constructor(
val clazz: Class<out RecyclerViewViewHolder>,
val layout: Int,
var dataList: MutableList<*>)
...
...
...
fun RecyclerView.getDataList() : ArrayList<*> {
return (adapter as RecyclerViewAdapter).dataList as ArrayList<*>
}
...
...
...
答案 0 :(得分:25)
Kotlin star-projections不等同于Java的原始类型。 MutableList<*>
中的星号(*)表示您可以安全地从列表中读取值,但您无法安全地为其写入值,因为列表中的值都是某种未知类型(例如Person
,{ {1}},String
或可能Number?
)。它与Any?
相同。
相反,MutableList<out Any?>
表示您可以从列表中读取和写入任何值。值可以是相同类型(例如MutableList<Any?>
)或混合类型(例如Person
和Person
)。
在您的情况下,您可能希望使用String
,这意味着您可以从列表中读取和写入任何非空值。
答案 1 :(得分:3)
所以我必须像以下人士一样投降:
$(document).ready(function(){});
因为dataList是ArrayList&lt; *&gt;而不是ArrayList和Kotlin是严格的。