在我的Android应用中,我有一个TreeMap
我很乐意放入Bundle
喜欢的
bundle.putSerializable("myHappyKey", myHappyTreeMap);
但是现在我将我的应用移植到Kotlin,Android Studio抱怨Serializable!
是必需的,但它找到了Map
。
我该如何处理?
编辑如果我将地图投射到Serializable
,警告似乎就会消失。是这样的吗?
编辑2 我宣布myHappyTreeMap
为
var myHappyTreeMap: Map<Int, Double> = mapOf()
documentation表示使用mapOf()
初始化的地图是可序列化的。如果文档说的那么......
答案 0 :(得分:5)
TreeMap
和其他各种Map
实现实现了Serializable
,但Map
接口本身并未扩展Serializable
。
我看到了一些选择:
确保myHappyTreeMap
的类型不仅仅是Map
,而是TreeMap
或其他扩展/实现Map
的{{1}}子类型。 e.g:
Serializable
将您的val myHappyTreeMap: TreeMap = ...
个实例投放为Map
(仅在知道 Serializable
实例类型实现Map
时才推荐您,否则您将得到Serializable
)。 e.g:
ClassCastException
检查您的bundle.putSerializable("myHappyKey", myHappyTreeMap as Serializable)
实例,如果它不是Map
,请使用Serializable
实施制作副本。{ e.g:
Map