Java 关于Apache Commons EqualBuilder和HashCodeBuilder以及空值

Java 关于Apache Commons EqualBuilder和HashCodeBuilder以及空值,java,equals,hashcode,apache-commons-lang,Java,Equals,Hashcode,Apache Commons Lang,Apache Commons Lang库中的类和可用于对象比较目的 例如,可以测试两个Person对象之间的相等性,如下所示: Person p1 =...; Person p2 =...; boolean equals = new EqualsBuilder(). append(p1.name, p2.name). append(p1.secondname, p2.secondname). append(p1.surname, p2.surnam

Apache Commons Lang库中的类和可用于对象比较目的

例如,可以测试两个
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
。EqualBuilder和HasCodeBuilder如何处理这一事实?是否在此字段上进行比较?或者可以将一个空字段的比较作为一个特殊的选项跳过?

< p>这两种方法将考虑<代码> P1. No.< /代码>和<代码> p2。以下是免费提供的源代码的相关部分:

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

这两种方法将考虑<代码> P1. Name < /C>和<代码> p2。以下是免费提供的源代码的相关部分:

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

嘿,匿名英雄,请解释你的反对票!这不是很容易自己测试吗?(无可否认,如果有文档记录就好了——也许你可以在检查行为后发送一个补丁。)我理解你的观点。查看源代码也很容易找到答案。这是免费的开源软件嘿,匿名英雄,请解释你的反对票!这不是很容易自己测试吗?(无可否认,如果有文档记录就好了——也许你可以在检查行为后发送一个补丁。)我理解你的观点。查看源代码也很容易找到答案。它是免费的开源软件