如何在GWT中深层复制任意对象?

时间:2011-03-01 17:08:34

标签: java gwt

我有一个标记为Serializable的任意对象。它有各种可变的子对象,代表货币金额,集合等。我希望能够克隆这个对象,所以如果用户修改它然后恢复它们的动作,我可以用新的克隆替换克隆。

这意味着我需要一个深层复制,因为我不希望用户更改原始出现的子对象(例如,添加/插入集合中的项目)。

对象没有实现Cloneable,因为它们是自动生成的,我也无法添加这样的方法。

没有痛苦的手写,无论如何都要在GWT中实现同样的深度克隆?如果这是Java,我可以考虑将对象序列化为字节数组流并反序列化新副本。

我不能在GWT中这样做。我可能会利用RPC,因为稍后会将对象发送到servlet。我只是不知道这是否容易。

任何人都知道我可以做一个简单的深层复制吗?

1 个答案:

答案 0 :(得分:1)

如果您有机会在域类中添加界面或注释,可以使用gwt-ent进行反射,并且可以通过反射轻松编写自己的深层复制语义。我已经使用这种技术来改善开发模式下的gwt序列化性能。

作为另一种解决方案,您可以使用gwt默认序列化机制进行深层复制,但不幸的是我没有任何线索如何实现此目标..