GWT中的深度克隆

LPD*_*LPD 6 javascript gwt clone

在浏览此链接时 如何在javascript中深入克隆

我遇到了一个通用克隆方法(在接受的答案中).我尝试了直接在javascript中运行它运行给出了完美的输出.

我将该代码放在本机标记中,并尝试克隆GWT中的对象.

我想要克隆的班级是

    private class Container
    {
        Integer i = 5;
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,它只是给我一个同样的对象.有人可以帮忙吗?如果不清楚的话,问我什么.万分感谢.

Zie*_*mdi 2

Jonathan 是对的:方法(也是 GWT 中唯一的方法)是使用https://code.google.com/p/google-web-toolkit/wiki/AutoBean

这可能有点尴尬,但它工作得很好,因为许多概念都与之相关(RequestFactory 中的 EntityProxy 也依赖于该机制,它是 GWT 的未来)。

深度 json 持久性也适用于 auto beans。

您唯一要做的就是创建一个描述您的类的接口(并在您的类中实现它):

public interface ContainerBean {
  Integer getI();
  void setI(Integer i);
}
Run Code Online (Sandbox Code Playgroud)

然后创建你的工厂接口

interface MyFactory extends AutoBeanFactory {
  // Factory method for a simple AutoBean
  AutoBean<ContainerBean> container();

  // Factory method for a non-simple type or to wrap an existing instance
  AutoBean<ContainerBean> container(ContainerBean toWrap);
}
Run Code Online (Sandbox Code Playgroud)

现在你可以包装你的对象并克隆它(通过 json )

可以克隆 AutoBean 及其中存储的属性值。clone() 方法有一个布尔参数,将触发深复制或浅复制。与 AutoBean 关联的任何标记值都不会被克隆。无法克隆包装委托对象的 AutoBean。

https://code.google.com/p/google-web-toolkit/wiki/AutoBean#clone()

因此请改用此方法: https ://code.google.com/p/google-web-toolkit/wiki/AutoBean#AutoBeanCodex