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;
}
答案 0 :(得分:5)
您可以使用CompareToBuilder中的EqualsBuilder或Apache 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);
}