比较来自不同 类 的 2 个实例的公共字段

Compare common fields of 2 instances from different classes

在 java 中是否有一种更简单的方法来比较不同 class 实例的公共字段(相同名称和类型)而无需显式检查每个实例对抗另一个领域。

moo.getFoo() == doo.getFoo();
moo.getRoo().equals(doo.getRoo())

-

Class Moo {
  private int foo;
  private Object roo;
}

Class Doo {
  private int foo;
  private Object roo;

  private String ho;
}

或者至少在那种情况下是可能的

Class Doo extends Moo {    
  private String ho;
}

您可以使用 CompareToBuilder or EqualsBuilder from Apache Commons Lang。此实用程序会为 class.

的所有字段自动创建 compareTo()、equals() 或 hashCode() 方法的结果
public int compareTo(Object o) {
     return CompareToBuilder.reflectionCompare(this, o);
}


public boolean equals(Object obj) {
    return EqualsBuilder.reflectionEquals(this, obj);
}