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

时间:2016-02-22 11:53:56

标签: java class compare equals equality

java中是否有更简单的方法来比较不同类的实例的公共字段(相同名称和类型),而无需明确地将每个字段与另一个字段进行检查。

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;
}

1 个答案:

答案 0 :(得分:5)

您可以使用CompareToBuilder中的EqualsBuilderApache Commons Lang。此Utilities自动为类的所有字段的compareTo(),equals()或hashCode()方法创建结果。

public int compareTo(Object o) {
     return CompareToBuilder.reflectionCompare(this, o);
}


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