【问题标题】:Synchronize two pojos with like-named fields together将两个具有类似名称字段的 pojo 同步在一起
【发布时间】:2012-12-04 17:21:05
【问题描述】:

我有两个 pojo。

public class Pojo1 implements Serializable {

    private static final long serialVersionUID = 1302290920579795856L;

    private Long id;
    private String idNumber; 
    private String vendorNumber; 
    private Date expires;

    // Getters and setters for each one
}

public class Pojo2 implements Serializable {

    private static final long serialVersionUID = 1302290920579795856L;

    private Long id;
    private String idNumber; 
    private String vendorNumber; 
    private Date expires;
    private String otherData;

    // Getters and setters for each one
}

是否有 Java API 可用于从 Pojo2 自动创建 Pojo1?

即:

Pojo1 newPojo1 = SomeLibrary.fromPojoWithLikeNamedFields(pojo2);

// newPojo1 now has all the fields that had the same name from pojo2

【问题讨论】:

  • 您可以使用反射来实现这一点,使用来自相关 getter 的值调用 setter...
  • 为什么需要 Pojo?它是同一类型。甚至 serialVersionUID 也是相同的。

标签: java automatic-properties


【解决方案1】:

复制构造函数不会完成这项工作吗?

public Pojo1(Pojo2 pojo2){
    this.id = pojo2.getId();
    this.idNumber = pojo2.getIdNumber();
    this.vendorNumber = pojo2.getVendorNumber();
    this.expires = pojo2.getExpires();
}

然后就这样使用,

Pojo1 newPojo1 = new Pojo1(pojo2);

还是我误会了什么...?

【讨论】:

  • +1(抱歉,超过了我的每日限额)。我的想法和你一样。我唯一要改变的是调用 getter,因为他的属性是私有的。
  • 他不想一开始就写复制构造函数。
  • @jlordo,很好,我完全忽略了这一点;修改代码以使用吸气剂! :)
  • @TomG,我认为包含这个复制构造函数比使用第三方库更有意义。
  • 我完全同意,并没有对你投反对票——只是指出原始问题暗示了对任何两个具有相似 bean 属性的 POJO 的通用方法,正如我所读到的那样。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 2016-12-16
  • 2016-01-01
  • 2021-01-08
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多