具有定义为List的hashMap的值:
private var mMap: HashMap<String, List<DataStatus>>? = null
有一个函数返回一个hashMap但其值是MutableList
fun getDataStatus(response: JSONObject?): HashMap<String, MutableList<DataStatus>> {
return HashMap<String, MutableList<AccountStatusAlert>>()
}
当将结果传递给hashMap期望列表时,出现错误:
mMap = getDataStatus(resp) //<== got error
出现错误:
Error:(81, 35) Type mismatch: inferred type is HashMap<String,
MutableList<DataStatus>> but HashMap<String, List<DataStatus>>? was expected
最佳答案
您有两种解决方案,具体取决于您的需求。
转换它
考虑到MutableList
是List
的子类,可以对其进行强制转换。这里只有一个问题:您将失去不变性。如果将List
转换回MutableList
,则可以修改其内容。
mMap = getDataStatus(repo) as HashMap<String, List<String>>
转换为
为了保持列表的不变性,您必须将每个
MutableList
转换为一个不变的List
:mMap = HashMap<String, List<String>>()
getDataStatus(repo).forEach { (s, list) ->
mMap?.put(s, list.toList())
}
在这种情况下,如果尝试修改
mMap
内列表的内容,将引发异常。关于android - 在Kotlin中,如何在目的地需要列表的地方传递回MutableList,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46650079/