【发布时间】:2011-03-02 16:00:23
【问题描述】:
我有一个标记为可序列化的任意对象。它有各种可变的子对象,代表货币金额、集合等。我希望能够克隆这个对象,所以如果用户修改它然后恢复他们的操作,我可以用一个新的克隆替换克隆。
这意味着我需要一个深层副本,因为我不希望用户更改子对象(例如,添加/插入集合中的项目)出现在原始对象上。
这些对象没有实现 Cloneable,因为它们是自动生成的,所以我也不能添加这样的方法。
没有痛苦地手写一个深层克隆,无论如何在 GWT 中完成同样的事情吗?如果这是 Java,我可以考虑将对象序列化为字节数组流并反序列化新副本。
我不能在 GWT 中这样做。可能我可以利用 RPC,因为该对象稍后会发送到 servlet。我只是不知道这是否容易做到。
谁知道我可以做一个深拷贝的简单方法?
【问题讨论】:
-
是什么生成了您想要克隆的类型?
-
一种特定领域的语言。这不是可以轻松更改的东西,即使我不喜欢它生成的 500 多个对象,它们都具有额外的 GWT 膨胀来处理深度复制。目前我已经在需要的地方手工编写了深层副本,但即使是一个实例也需要大约 100 行代码。