1

当为我的一个类覆盖 equals 属性时,是否可以这样实现它?有问题的属性(例如标识符)可以是 String、boolean、Date、Set 或 LinkedHashSet

public boolean equals(Object obj)
{
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;

    if (!compareProperty(identifier, other.getIdentifier())) return false;
    //Continue for all properties
}

//Compares any two objects
private boolean compareProperty(Object sourceObject, Object testObject)
{
    if (sourceObject == null)
    {
        if (testObject != null)
            return false;
    }
    else if(!sourceObject.equals(testObject))
    {
        return false;
    }

    return true;
}

为什么或者为什么不?

4

1 回答 1

2

这确实是应该做的。

不过,我不会重新发明轮子。考虑使用Objects.equals(在 Java 7 中)、Objects.equal(在 Guava 中)或EqualsBuilder(在 apache commons-lang 中)。

于 2012-01-12T07:41:23.030 回答