关于Apache Commons EqualsBuilder和HashCodeBuilder以及空值



Apache Commons Lang库中的类EqualsBuilder和HashCodeBuilder可用于对象比较。

。,可以像下面这样检验两个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如何处理这个事实?是否在这个领域进行了比较?或者对空字段的比较可以作为一个特殊选项跳过?

如果p1.namep2.name都为null,则这两个方法将认为它们相等。以下是免费提供的源代码的相关部分:

public EqualsBuilder append(Object lhs, Object rhs) {
    if (isEquals == false) {
        return this;
    }
    if (lhs == rhs) {
        return this;
    }
    ...

最新更新