scala - 是否可以序列化/反序列化枚举?
问题描述
假设我定义以下内容:
object Numbers extends Enumeration {
val One = Value(1)
val Two = Value(2)
val Three = Value(3)
}
我希望能够存储这个值(理想情况下作为字符串,但 Int 可以)。假设我执行以下操作:
val x = Test.Two
val s = x.toString
val i = x.id
那么有没有办法恢复这个值呢?
val y = ??? // Restore from either s or i
解决方案
你可以使用 withName 函数
object Numbers extends Enumeration {
val One = Value(1)
val Two = Value(2)
val Three = Value(3)
}
val name = Numbers.Two.toString
val restoredValue = Numbers.withName(name)
但如果值具有 String 类型,它就行不通了……另一种方法是通过 id
val saved = Numbers.Two.id
val list = Numbers.values.toArray
val restored = list(saved)
推荐阅读
- javascript - 如何在 HANA XS / Javascript 中以有效的方式转置混合数据数组
- redis - 使用 dns 设置 Redis 集群
- cupy - 检查 `name_expressions` 是否可迭代
- amazon-web-services - 调用具有无效 JSON 错误的 Glue 虚拟视图时,Athena 查询失败
- python - 从 pyplot.imshow 的算法中获取插值数据
- python - ldap3 打印 false 和空列表。为什么列表是空的?
- jquery - 未能从 API 获取数据后未显示错误 div
- c - 如何在c程序中提取数据并返回
- python - 如何销毁使用 for 循环生成的按钮(单击后...)
- csv - Gsuite 是否支持创建可用于在用作搜索字符串时发现信息的自定义字段?