具有定义为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

最佳答案

您有两种解决方案,具体取决于您的需求。

转换它

考虑到MutableListList的子类,可以对其进行强制转换。这里只有一个问题:您将失去不变性。如果将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/

10-09 03:07