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.");
}
}
请注意,它不处理引用。相反,它提供了一个用于保存和恢复整个对象状态的方案。本质上,它是 Java 对象的深层副本。
添加回答
举报