0

この問題に関する google-search と stackoverflow に関する私の調査では解決しませんでした。

私のデータ構造の抜粋をお見せしたいと思います:

「SequenceHolder」と呼ばれるクラスがあります=>これは次のものを運びます:

ArrayList<SequenceData> data;

Sequenceholder 内には、シリアル化を呼び出す関数があります。

public void writeSequenceList() throws FileNotFoundException, IOException {        
    FileOutputStream fout = new FileOutputStream(path);
    ObjectOutputStream oout = new ObjectOutputStream(fout);
    oout.writeObject(data);
    oout.close();
    fout.close();        
}

クラス SequenceObject には次のフィールドがあります: (これは一番上にあり、シリアライゼーションを開始します)

private ArrayList<SequenceModel> recordedSequenceData;
private String sequenceUrl;

SequenceModel は次のように定義されています。

private Object sequenceRawData;    
private boolean isProcessedByRequest;

sequenceRawdata オブジェクトは、基本的に他の 2 つのクラス (文字列のみを含む) です。

この「トレイル」のすべてのクラスは、インターフェース「Serializable」を実装します。

これは逆シリアル化です:

  public ArrayList<SequenceData> loadSequenceList() throws FileNotFoundException, IOException, ClassNotFoundException {
        FileInputStream fileIn = new FileInputStream(path);
        ObjectInputStream in = new ObjectInputStream(fileIn);
        this.data = (ArrayList<SequenceData>) in.readObject();
        in.close();
        fileIn.close();
        return data; // load from de-serialization
    }

SequenceObject の逆シリアル化の後、「sequenceUrl」のみを取得しますが、recordedSequenceData は取得しません。これを行うためのトリックはありますか?!

ObjectOutputStream を使用していくつかのクラスを拡張し、すべてのクラスで明示的に「this」を使用して書き込みプロセスを呼び出すことは、私の頭に浮かびました-しかし、ええ、それが良いアイデアかどうかはわかりません。

4

1 に答える 1