在Kotlin中可串行化
在我的Android应用程序中,我有一个TreeMap
,我可以愉快地把它放入一个Bundle
bundle.putSerializable("myHappyKey", myHappyTreeMap);
但现在,我正在将我的应用程序移植到Kotlin,Android Studio抱怨Serializable!
是必需的,但它是找到一个Map
。
我如何处理这个?
编辑警告似乎消失,如果我把我的地图映射到一个Serializable
。 这是这样吗?
编辑2我宣布和初始化myHappyTreeMap
为
var myHappyTreeMap: Map<Int, Double> = mapOf()
该文件说,使用mapOf()
初始化的mapOf()
是可序列化的。 如果文档说的这样…
TreeMap
和其他各种Map
实现实现Serializable
但Map
接口本身并不扩展Serializable
。
我看到一些选择:
-
确保
myHappyTreeMap
的类型不是简单的Map
而是TreeMap
或其他扩展/实现Serializable
Map
子类型。 例如:val myHappyTreeMap: TreeMap = ...
-
将您的
Map
实例转换为Serializable
(只有当您知道Map
实例类型实现了Serializable
时才推荐使用,否则您将得到ClassCastException
)。 例如:bundle.putSerializable("myHappyKey", myHappyTreeMap as Serializable)
-
检查你的
Map
实例,如果它不是Serializable
,那么使用一个Map
实现来复制它。 例如:bundle.putSerializable("myHappyKey", when (myHappyTreeMap) { is Serializable -> myHappyTreeMap else -> LinkedHashMap(myHappyTreeMap) })
- 'com.android.tools.build:gradle:3.0.0-alpha3'和'com.android.tools.build:gradle:3.0.0-alpha1'有什么区别?
- 在Java中设置BufferedImage alpha掩码
- 由于接收器类型不匹配,以下候选人都不负责任
- Android Kotlin – 无法安排与警报管理器通知未来的日期
- Android Studio中的Gradle是什么?
- Dagger2和Kotlin运行失败的原因是:app:compileDebugKotlinAfterJava
- 房间和Kotlin – 得到“查询中的每个绑定变量必须有一个匹配的方法参数”。
- 如何写while循环与在kotlin中的responseInputStream.read – (while((i = responseInputStream.read(byteContainer))
- kotlin验证输入字段
- 可能在Lint中的错误
- 在Kotlin中使用AudioRecord读取函数与平台类型的参数不匹配