Java:Java5枚举自定义序列化

时间:2012-04-18 08:59:44

标签: java serialization enums

为了序列化大型枚举实例,我考虑使用“序列化代理”,其中代理对象将是一个非常小的对象,唯一地标识相应的枚举实例。但是我发现枚举会忽略任何read / writeObject或resolve / replace方法。所以我的问题是,如何有效地序列化大型枚举实例?字符串/ XML表示是一种可能性,但我的感觉是这将是一个维护问题。

1 个答案:

答案 0 :(得分:3)

您正在重新发明Java序列化默认已经完成的工作:

引用来自 http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/relnotes15.html

  

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