2012-04-18 121 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 方法,並使用接收的常量名 來獲取要返回的枚舉常量。