Javascript GWT中的深度克隆
在浏览此链接时 我遇到了一个通用的克隆方法(在公认的答案中)。我试着直接在javascript中运行它,它的运行提供了完美的输出 我将代码放在原生标记中,并尝试在GWT中克隆一个对象 我要克隆的类是Javascript GWT中的深度克隆,javascript,gwt,clone,Javascript,Gwt,Clone,在浏览此链接时 我遇到了一个通用的克隆方法(在公认的答案中)。我试着直接在javascript中运行它,它的运行提供了完美的输出 我将代码放在原生标记中,并尝试在GWT中克隆一个对象 我要克隆的类是 private class Container { Integer i = 5; } 当我尝试这样做时,它只是返回给我相同的对象。有人能帮忙吗? 如果不清楚,可以问我任何问题。非常感谢。实现这一目标的一个方法是使用 我认为这个方法的唯一诀窍是必须使用Aut
private class Container
{
Integer i = 5;
}
当我尝试这样做时,它只是返回给我相同的对象。有人能帮忙吗?
如果不清楚,可以问我任何问题。非常感谢。实现这一目标的一个方法是使用 我认为这个方法的唯一诀窍是必须使用
AutoBeanFactory
来创建所有类
然后,您可以将autobean编码为一个拆分表,然后使用结果解码为一个新的autobean实例。Jonathan是正确的:方法(也是GWT中唯一的方法)是使用 这可能有些尴尬,但它工作得很好,因为许多概念都与此相关(RequestFactory中的EntityProxy也依赖于该机制,这是GWT的未来) 深度json持久性也可以与自动bean一起使用 您唯一需要做的就是创建一个描述类的接口(并在类中实现它): 然后创建工厂界面
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);
}
接口MyFactory扩展了AutoBeanFactory{
//简单AutoBean的工厂方法
AutoBean容器();
//用于非简单类型或包装现有实例的工厂方法
AutoBean集装箱(集装箱Bean拖缆);
}
现在您可以包装并克隆对象(通过json)
克隆()
可以克隆自动bean及其存储的属性值。
clone()方法具有一个布尔参数,该参数将触发一个深度或
浅薄的副本。与自动bean关联的任何标记值都不会
被克隆。无法克隆包装委托对象的自动bean
因此,请改用此方法:
您不使用Java方式的任何原因™ ? (例如,向类中添加一个
clone()
方法,或者如果您根本没有多态性,则添加一个副本构造函数:publiccontainer(Container Container){…}
。然后我将不得不编写clone())方法。我试图得到一个通用的克隆函数来为我完成这项工作。实际上,这是在继续:我不确定我对使用AutoBean
s执行深度复制的感觉如何,但它应该可以做到这一点。
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);
}