Java覆写equeal和hashCode方法

来源:互联网 发布:归并排序 算法严蔚敏 编辑:程序博客网 时间:2024/05/24 05:24
使用Apache commons提供的commons-lang-xxx.jar包
下载地址:http://commons.apache.org/lang/

覆写equals使用:org.apache.commons.lang.builder.EqualsBuilder
覆写hashCode使用:org.apache.commons.lang.builder.HashCodeBuilder

来自apache官方的实例
public class Person {
String name;
int age;
boolean smoker;
...

// overwrite "equals"
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()
.appendSuper(super.equals(obj))
.append(field1, rhs.field1)
.append(field2, rhs.field2)
.append(field3, rhs.field3)
.isEquals();
}

// overwrite "hashCode"
public int hashCode() {
// you pick a hard-coded, randomly chosen, non-zero, odd number
// ideally different for each class
return new HashCodeBuilder(17, 37).
append(name).
append(age).
append(smoker).
toHashCode();
}

}
原创粉丝点击