【发布时间】:2019-07-22 08:38:25
【问题描述】:
我有警告:
Unchecked cast: Serializable! to kotlin.collections.HashMap<String, String> /* = java.util.HashMap<String, String> */
在这个地方:
filterData = bundle.getSerializable("filter_data") as HashMap<String, String>
我saw 这个问题和this 一个但我没能解决我的问题。我必须在片段中通过捆绑获取数据。也许有人遇到过类似的问题并且知道如何解决?
更新
我有这个全局变量:
var filterData: HashMap<String, String> = HashMap()
由于 cmets 和答案,我如何收到它:
when {
bundle.containsKey("filter_data") -> {
val serializable = bundle.getSerializable("filter_data")
if(serializable is java.util.HashMap<*, *>){
filterData = bundle.getSerializable("filter_data") as HashMap<String, String>
Singleton.filter_data = filterData
getJobList(offset, type, sp.getString("access_token", ""), bundle.getSerializable("filter_data") as HashMap<String, String>, false)
}
}
....
}
我有这个as HashMap<String, String> 部分黄色和警告:
Unchecked cast: Serializable! to kotlin.collections.HashMap<String, String> /* = java.util.HashMap<String, String> */
【问题讨论】:
-
警告说
bundle.getSerializable("filter_data")可以是任何Serializable。这就是你有责任强制转换它的原因,因为无法在编译时进行检查。要删除警告,你可以像var serializable = bundle.getSerializable("filter_data"); if(serializable is HashMap<String, String>) {filterData = serializable as HashMap<String, String> } -
AS 建议我在 if 条件为
if(serializable is HashMap<*, *>)时检查可序列化,我决定问你在这种情况下我必须做什么? -
好的,但我不确定您在评论中的意思。我的评论有帮助吗,还是您仍有问题?
-
我还是有问题:(
-
好的,你还有什么问题?