1 回答

TA貢獻1808條經驗 獲得超4個贊
是的,您需要克隆對象。
像往常一樣,在互聯網上找到的例子相當貧乏,但重構大師有一個可行的例子。他們用于加載和保存對象的代碼如下所示:
public String backup() {
try {
ByteArrayOutputStream b= new ByteArrayOutputStream();
ObjectOutputStream o= new ObjectOutputStream(b);
o.writeObject(this.allShapes);
o.close();
return Base64.getEncoder().encodeToString(b.toByteArray());
} catch (IOException e) {
return "";
}
}
public void restore(String state) {
try {
byte[] data = Base64.getDecoder().decode(state);
ObjectInputStream o = new ObjectInputStream(new ByteArrayInputStream(data));
this.allShapes = (CompoundShape) o.readObject();
o.close();
} catch (ClassNotFoundException e) {
System.out.print("ClassNotFoundException occurred.");
} catch (IOException e) {
System.out.print("IOException occurred.");
}
}
請注意,它不處理引用。相反,它提供了一個用于保存和恢復整個對象狀態(tài)的方案。本質上,它是 Java 對象的深層副本。
添加回答
舉報