2016-04-09 6 views
0

基本的には、直列化/逆シリアル化時に列挙型のように動作するクラスが必要です。これらの操作では識別子のみが保存/ロードされます。これらのオブジェクトの1つがシリアル化されると、整数をファイルに保存します。デシリアライズするときは、この整数をフードの下で読み込み、静的配列のオフセットとして使用し、その結果のオブジェクトが配列に含まれるインスタンスになります。これはできますか?クラスを識別子にシリアル化する(配列内のオフセット)

+0

はい、あなたは各列挙に割り当てたIDである 'ordinal()'以上を使用できます。 –

答えて

0

今私はこれがあります。

public class COMMODITY implements Serializable{ 

    static COMMODITY[] cs = new COMMODITY[]{ 
      new COMMODITY("hello", 0), 
      new COMMODITY("hello2", 1) 
    }; 

    final int index; 
    final transient String name; 
    final transient int two = 2; 

    COMMODITY(String name, int index){ 
     this.name = name; 
     this.index = index; 
    } 

    private Object readResolve() throws ObjectStreamException{ 
      return cs[index]; 
    } 

} 

をそして、それは私が欲しいものを私に与えます。しかし、私はもっと良い方法を望んでいます

関連する問題