可在Kotlin中序列化

时间:2016-12-15 15:09:22

标签: android kotlin

在我的Android应用中,我有一个TreeMap我很乐意放入Bundle喜欢的

bundle.putSerializable("myHappyKey", myHappyTreeMap);

但是现在我将我的应用移植到Kotlin,Android Studio抱怨Serializable!是必需的,但它找到了Map

我该如何处理?

编辑如果我将地图投射到Serializable,警告似乎就会消失。是这样的吗?

编辑2 我宣布myHappyTreeMap

var myHappyTreeMap: Map<Int, Double> = mapOf()

documentation表示使用mapOf()初始化的地图是可序列化的。如果文档说的那么......

1 个答案:

答案 0 :(得分:5)

TreeMap和其他各种Map实现实现了Serializable,但Map接口本身并未扩展Serializable

我看到了一些选择:

  1. 确保myHappyTreeMap的类型不仅仅是Map,而是TreeMap或其他扩展/实现Map的{​​{1}}子类型。 e.g:

    Serializable
  2. 将您的val myHappyTreeMap: TreeMap = ... 个实例投放为Map(仅在知道 Serializable实例类型实现Map时才推荐您,否则您将得到Serializable)。 e.g:

    ClassCastException
  3. 检查您的bundle.putSerializable("myHappyKey", myHappyTreeMap as Serializable) 实例,如果它不是Map,请使用Serializable实施制作副本。{ e.g:

    Map