0

Apache Commons Lang 库中的EqualsBuilderHashCodeBuilder类可用于对象比较。

例如,可以测试两个Person对象之间的相等性,如下所示:

Person p1 =...;
Person p2 =...;
boolean equals = new EqualsBuilder().
        append(p1.name, p2.name).
        append(p1.secondname, p2.secondname).
        append(p1.surname, p2.surname).
        append(p1.age, p2.age).
        isEquals();

假设一个字段不是强制性的,例如secondname. EqualsBuilder 和 HasCodeBuilder 如何处理这个事实?是否在该领域进行了比较?或者可以将空字段的比较作为特殊选项跳过?

4

1 回答 1

4

如果它们都为空,这两种方法将考虑p1.name和相等。p2.name这是免费提供的源代码的相关部分:

public EqualsBuilder append(Object lhs, Object rhs) {
    if (isEquals == false) {
        return this;
    }
    if (lhs == rhs) {
        return this;
    }
    ...
于 2013-05-05T08:03:03.547 回答