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

loc*_*cka 7 java gwt

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

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

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

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

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

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

Gur*_*oca 1

如果你有机会给你的领域类添加接口或者注解,你可以使用gwt-ent进行反射,你可以通过反射的方式轻松编写自己的深拷贝语义。我已使用此技术来提高开发模式下的 gwt 序列化性能。

作为另一个解决方案,您可以使用 gwt 默认序列化机制进行深度复制,但不幸的是我不知道如何实现这个目标。