返回顶部

收藏

java重写object的hashCode(),equals()方法示例

更多

java重写object的hashCode(),equals()方法示例

equals()和hashCode()方法解释:

equals() (javadoc) 用来定义判断对象是否和另外一个对象相等,它必须是可逆的,对称的,并且是可传递的.

另外,equals方法也必须是稳定的(在两个对象都没有变化期间,他们之间equals应该返回一致的值)

hashCode() (javadoc) 必须是稳定的,假如对象相等,他们必须返回相同的hashCode

也就是说假定a.equals(b)成立,那么a.hashCode()必须等于b.hashCode();

下面是一个实现equals和hashCode的类示例:

public class Person {
    private String name;
    private int age;
    // ...

    public int hashCode() {
        return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
            // if deriving: appendSuper(super.hashCode()).
            append(name).
            append(age).
            toHashCode();
    }

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

        Person rhs = (Person) obj;
        return new EqualsBuilder().
            // if deriving: appendSuper(super.equals(obj)).
            append(name, rhs.name).
            append(age, rhs.age).
            isEquals();
    }
}

标签:java,OOD,HashCode

收藏

0人收藏

支持

0

反对

0

发表评论