在我的Android应用程序中,我有一个TreeMap我可以愉快地放入Bundle类似的东西
bundle.putSerializable("myHappyKey", myHappyTreeMap);
Run Code Online (Sandbox Code Playgroud)
但现在我将我的应用程序移植到Kotlin,Android Studio抱怨这Serializable!是必需的,但它正在找到一个Map.
我该如何处理?
编辑如果我将地图投射到一个警告,警告似乎就消失了Serializable.这是这样的吗?
编辑2我宣布并初始化myHappyTreeMap为
var myHappyTreeMap: Map<Int, Double> = mapOf()
Run Code Online (Sandbox Code Playgroud)
该文件说,地图使用初始化mapOf()可序列化.如果文档说的那么......
TreeMap和各种其他Map实现实现Serializable但Map接口本身不扩展Serializable.
我看到一些选择:
确保类型myHappyTreeMap不单纯Map,但TreeMap还是一些其他的Map扩展/工具亚型Serializable.例如:
val myHappyTreeMap: TreeMap = ...
Run Code Online (Sandbox Code Playgroud)你要把你的Map实例为Serializable(只推荐,如果你知道了Map实例类型实现Serializable,否则你会得到一个ClassCastException).例如:
bundle.putSerializable("myHappyKey", myHappyTreeMap as Serializable)
Run Code Online (Sandbox Code Playgroud)检查您的Map实例,如果不是Serializable,请使用Map实现来复制它.例如:
bundle.putSerializable("myHappyKey", when (myHappyTreeMap) {
is Serializable -> myHappyTreeMap
else -> LinkedHashMap(myHappyTreeMap)
})
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
6469 次 |
| 最近记录: |