如何将对象深度复制到具有相同字段的另一个类对象?

时间:2016-11-14 09:26:29

标签: java deep-copy

我有两个java类,如下所示

public class A implements Serializable {

    private String name;
    private List<String> nameList;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }   
}

public class B implements Serializable {

    private String name;
    private List<String> nameList;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }   
}

现在我有一个A类的对象,Aobj,两个字段都已初始化。我正在使用BeanUtils.copyProperties(Bobj,Aobj),但只有name字段值被复制到Bobj中,但Bobj.nameList为null。有没有办法深度复制对象,以便复制所有字段,包括列表,地图等集合。

我在某个地方听说过Dozer,不确定这是否是为了这个目的。

1 个答案:

答案 0 :(得分:1)

有两个完全相同的不同类,有点奇怪。但无论如何,为了深入复制一个到另一个,只需在一些Util类中编写2个静态方法。一种方法将采用A类并返回B类,另一种方法将采用B并返回A类。自己进行深度复制。此外,您可以创建与您的类A和B相同的类C,然后使您的类A和B只是每个扩展C的空类。它将为您提供相同的结构,但会使您的复制逻辑更容易,因为您可以只使用A和B作为C的实例。