在java中将一个pojo的所有属性复制到另一个pojo?

时间:2013-11-18 05:35:35

标签: java java-ee-6

我有一些第三方罐子的POJO,我们不能直接向客户公开。

ThirdPartyPojo.java

public class ThirdPartyPojo implements java.io.Serializable {

    private String name;
    private String ssid;
    private Integer id;

    //public setters and getters

}

以上课程是我们正在使用的第三方jar的一部分。

ThirdPartyPojo result = someDao.getData(String id);

现在我们的计划是ThirdPartyPojo是第三方jar的一部分,我们不能直接向客户发送ThirdPartyPojo结果类型。我们想创建自己的pojo,它将具有与ThirdPartyPojo.java类相同的属性。我们必须将ThirdPartyPojo.java中的数据设置为OurOwnPojo.java并将其返回如下。

public OurOwnPojo getData(String id){

    ThirdPartyPojo result = someDao.getData(String id)

    OurOwnPojo response = new OurOwnPojo(result);

    return response;

    //Now we have to populate above `result` into **OurOwnPojo** and return the same.

}

现在我想知道是否有一种最佳方法可以在OurOwnPojo.java中使用与ThirdPartyPojo.java相同的属性,并将数据从ThirdPartyPojo.java填充到OurOwnPojo.java并返回相同?

public class OurOwnPojo implements java.io.Serializable {

    private ThirdPartyPojo pojo;

    public OurOwnPojo(ThirdPartyPojo pojo){

         this.pojo = pojo
    }


    //Now here i need to have same setter and getters as in ThirdPartyPojo.java

    //i can get data for getters from **pojo**

}

谢谢!

3 个答案:

答案 0 :(得分:11)

您可能正在搜索Apache Commons BeanUtils.copyProperties

public OurOwnPojo getData(String id){

  ThirdPartyPojo result = someDao.getData(String id);
  OurOwnPojo myPojo=new OurOwnPojo();

  BeanUtils.copyProperties(myPojo, result);
         //This will copy all properties from thirdParty POJO

  return myPojo;
}

答案 1 :(得分:0)

org.springframework.beans.BeanUtils优于apache aone:

Task subTask = new Task();
org.springframework.beans.BeanUtils.copyProperties(subTaskInfo.getTask(), subTask);

答案 2 :(得分:0)

不要误判起点和终点的情感:

try {

  BeanUtils.copyProperties(new DestinationPojo(), originPojo);

} catch (IllegalAccessException | InvocationTargetException e) {
  e.printStackTrace();
}