比较来自不同 类 的 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);
}
在 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);
}