0

大きな列挙型インスタンスをシリアル化するために、プロキシ オブジェクトが対応する列挙型インスタンスを一意に識別する非常に小さなオブジェクトである「シリアル化プロキシ」を使用することを考えていました。ただし、列挙型では read/writeObject または resolve/replace メソッドが無視されることがわかりました。私の質問は、大きな列挙型インスタンスを効率的にシリアル化するにはどうすればよいですか? String/XML 表現も可能ですが、これはメンテナンスの問題になると思います。

4

1 に答える 1

3

Javaシリアライゼーションによってデフォルトですでに行われていることを再発明しています:

http://docs.oracle.com/javase/1.5.0/docs/guide/serialization/relnotes15.htmlからの引用 :

バージョン 5.0 で新しく追加された、列挙型を処理するためのシリアル化のサポートが追加されました。列挙型インスタンスをシリアライズするための規則は、「通常の」シリアライズ可能なオブジェクトをシリアライズするための規則とは異なります。列挙型インスタンスのシリアライズされた形式は、その列挙型定数名と、その基本列挙型を識別する情報のみで構成されます。逆シリアル化の動作も異なります。クラス情報を使用して適切な列挙型クラスを見つけ、そのクラスと受け取った定数名を使用して Enum.valueOf メソッドを呼び出して、返す列挙型定数を取得します。

于 2012-04-18T09:34:40.810 に答える