【发布时间】:2017-12-26 10:19:53
【问题描述】:
有很多关于枚举和序列化的教程,我也在sun看过文章,但找不到如何序列化。
枚举常量的序列化方式与普通的可序列化或可外部化对象不同。枚举常量的序列化形式仅由其名称组成;常量的字段值不存在于表单中。为了序列化枚举常量,ObjectOutputStream 写入枚举常量的 name 方法返回的值。为了反序列化一个枚举常量,ObjectInputStream 从流中读取常量名;然后通过调用 java.lang.Enum.valueOf 方法获得反序列化的常量,将常量的枚举类型与接收到的常量名称一起作为参数传递。
任何例子都会很感激。
【问题讨论】:
-
您的问题到底是什么?您可以在不添加任何内容的情况下对枚举进行序列化,您尝试过哪些方法不起作用?
-
@Bit 如上所说“枚举常量被序列化不同”这是什么意思。黑白正常序列化然后枚举有什么区别。
-
我们开始吧,所以您的实际问题是“Java 中的枚举是如何序列化的?”。你可以在这里找到答案stackoverflow.com/a/15522276/6768966。 “我也看了sun的文章,但是不知道怎么连载。”部分具有误导性,看起来你不知道如何,而不是为什么。
-
我认为他的意思是只有枚举值的名称被序列化和保留。如果您创建一个构造函数,它使用枚举保存任何类型的数据,则该数据不会序列化并且不会保留。
标签: java serialization