0
我有我保存和恢复一个单独的类:的readResolve与serialisable似乎并不奏效
private void saveData(){
FileOutputStream saveFile;
saveFile = this.openFileOutput(STATE_SAVE_FILE_NAME, Context.MODE_PRIVATE);
ObjectOutput output = new ObjectOutputStream(saveFile);
output.writeObject(deck);
}
private void restoreData(){
FileInputStream restoreFile;
restoreFile = this.openFileInput(STATE_SAVE_FILE_NAME);
ObjectInput input = new ObjectInputStream(restoreFile);
deck = (Deck) input.readObject();
}
对象甲板所以我在它定义的readRestore方法的单例:
private Object readResolve() {
return deck;
}
当我保存有绝对的数据,但恢复没有给我什么。我错过了什么吗?
保存绝对有效,因为我可以保存和恢复其他对象。只有单身人士失败。
为什么所有的例子都显示你只需要返回你从returnInstance(或者等效的)得到的那个呢?示例:http://www.oodesign.com/singleton-pattern.html – theblitz 2011-06-06 06:41:03
@theblitz您的代码与您发布的链接中的内容不同。该示例演示如何继续返回已存在的相同单例实例,以便放弃反序列化的对象并返回getInstance()。你试图通过反序列化来改变单体状态,但是你没有成功,因为你也放弃了序列化对象并返回'deck',实际上它可能仍然是空的。根本不是相同的代码,也不是为了相同的目的。 – EJP 2011-06-06 07:46:15
因此,在第一次打电话时,我应该将“this”复制到“deck”中,然后返回。在随后的电话中只返回“甲板”? – theblitz 2011-06-06 09:09:52