java - 没有包名的深拷贝

标签 java package deep-copy

如何从不同的包中深度复制相同的对象,但具有相同的结构而不进行序列化?

示例:

package com.foo;
class Tree{
    List<Leaf> leaf;
    Int trunk;
}

package com.bar;
class Tree{
    List<Leaf> leaf;
    Int trunk;
}

都具有更复杂的子对象(ArrayList 的 ArrayList)。 这基本上是我通过不同的网络服务收到的相同对象,因此位于不同的包中。

我希望能够将所有不同版本“映射”到同一对象,例如

转换:com.bar.Tree barTree = (com.foo.Tree) fooTree;

或深层复制:com.bar.Tree barTree = DeepCopy.(fooTree);

预期结果是 barTree.leaf[k] == fooTree.leaf[k]barTree.trunk==fooTree.trunk

理论上我可以通过反射将所有计算递归复制到另一个对象的相应元素(具有相同的名称),但是没有更简单的方法吗?

编辑:更复杂的示例。

最佳答案

您可以在每个类中添加所谓的复制构造函数,该类接受另一个类的实例作为参数,例如:

package com.foo;
class Tree{
    String leaf;
    Int trunk;
    Tree(com.bar.Tree tree){
         this.leaf = tree.leaf;
         this.trunk = tree.trunk;
    }

}

然后您将执行以下操作:

com.bar.Tree barTree = new com.bar.Tree(fooTree);

关于java - 没有包名的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38506287/

相关文章:

scala - 关于 protected[some_scope] 和 scala 中继承工作的困惑

c++ - 如何从 const 对象(深度)复制 map

Java-TestNG : Read an excel file, 通过 TestNG 和 Apache POI 断言并写回 excel 文件

golang 导入包内包

java - 为什么我的 Java 应用程序看不到 *.jrxml?

c# - Nuget nuspec 不适用于通配符

java - Java中的深拷贝数组

java - 对象数组实例的深拷贝,Java

java - 通过 itext pdf 库进行图像旋转

java - 字符串分割及数据返回问题