为了序列化大型枚举实例,我考虑使用“序列化代理”,其中代理对象将是一个非常小的对象,唯一地标识相应的枚举实例。但是我发现枚举会忽略任何read / writeObject或resolve / replace方法。所以我的问题是,如何有效地序列化大型枚举实例?字符串/ XML表示是一种可能性,但我的感觉是这将是一个维护问题。
答案 0 :(得分:3)
您正在重新发明Java序列化默认已经完成的工作:
引用来自 http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/relnotes15.html:
已添加对序列化的支持以处理枚举类型, 这是5.0版本中的新功能。序列化枚举的规则 实例与序列化“普通”可序列化的实例不同 object:枚举实例的序列化形式仅由其组成 枚举常量名称,以及标识其基本枚举的信息 类型。反序列化行为也有所不同 - 类信息 用于查找适当的枚举类和Enum.valueOf 使用该类和接收到的常量名称调用方法 为了获得枚举常量返回。