0
我想比较两个对象与复杂的结构,但Apache EqualsBuilder.reflectionEquals是无法比较这两个。你能告诉我我错过了什么吗?它作为结果返回false。复杂对象的Apache EqualsBuilder
import org.apache.commons.lang.builder.EqualsBuilder;
public class Test {
public static void main(String[] args){
FirstLevel firstLevel1 = new FirstLevel("string1", "string2", new SecondLevel("line1"));
FirstLevel firstLevel12 = new FirstLevel("string1", "string2", new SecondLevel("line1"));
System.out.print(EqualsBuilder.reflectionEquals(firstLevel1, firstLevel12, true));
}
}
class FirstLevel{
String line1;
String line2;
SecondLevel secondLevel;
FirstLevel(String line1, String line2, SecondLevel secondLevel) {
this.line1 = line1;
this.line2 = line2;
this.secondLevel = secondLevel;
}
}
class SecondLevel{
String level2Line1;
SecondLevel(String level2Line1) {
this.level2Line1 = level2Line1;
}
}
但是,如果我不什么是否拥有对班级的控制权?我不能使用扩展也因为类紧密耦合。 –
您可以在FirstLevel和SecondLevel之外的测试工具类中定义equals方法,该方法基于FirstLevel的两个实例之间的相等性来测试值? – JMM
您也可以查看Unitils库中的ReflectionAssert.assertReflectionEquals - 我已通过指向它的链接更新了我的答案。 – JMM