java重写object的hashCode(),equals()方法示例,hashcodeequals,java重写object
分享于 点击 10084 次 点评:54
java重写object的hashCode(),equals()方法示例,hashcodeequals,java重写object
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(); }}
用户点评