我对 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 对象基本上是另外两个类(仅包含字符串)!
这个“trail”的每个类都实现了“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”,但没有记录的SequenceData。有没有什么技巧可以做到这一点?!
我想到了,用 ObjectOutputStream 扩展一些类,并在每个类中明确地用“this”调用写作过程——但是,我不确定这是否是个好主意。