2012-04-18 112 views
0

对于序列化大型枚举实例,我在考虑使用“序列化代理”,其中代理对象将是唯一标识相应枚举实例的非常小的对象。但是我发现任何read/writeObject或解析/替换方法都会被枚举忽略。所以我的问题是,我将如何有效地序列化大型枚举实例? String/XML表示是一种可能性,但我的感觉是这将是一个维护问题。Java:Java5枚举自定义序列化

+4

enum'标识符每个流只发送一次。你确定这对你来说是一个大问题吗? – 2012-04-18 09:21:45

回答

3

你重塑什么是默认已经完成由Java序列化:从 http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/relnotes15.html

报价:

支持已被添加到序列化处理枚举类型, 这是新的版本5.0。序列化枚举实例的规则与用于序列化“普通”序列化对象的规则不同。对象:枚举实例的序列化形式仅包含其枚举常量名称的 以及标识其基类型枚举的信息 类型。反序列化行为也有所不同 - 类信息 用于查找适当的枚举类,并使用该类调用Enum.valueOf 方法,并使用接收的常量名 来获取要返回的枚举常量。