在判断两个对象是否相等的时候,会先调用hashCode方法,如果返回ture则接着调用euals方法,如果都返回tru则表明两个对象相等
重写hashCode方法:
public int hashCode( ) {
return new HashCodeBuilder(17, 37)
.append(firstName)
.append(lastName).toHashCode( );
}
HashCodeBuilder构造器需要两个int型数字,用来作为产生hash code的偏移量,两个数字必须是单数和非零值,还可以附加类的一些属性,如果你需要附加所有的属性,你可以简单的使用:
public int hashCode( ) {
return HashCodeBuilder.reflectionHashCode(this);
}
重写equals方法:
public boolean equals(Object o) {
boolean equals = false;
if ( o != null &&
User.class.isAssignableFrom(o) ) { //可以用o instanceof User代替
User user = (User) o;
equals = (new EqualsBuilder( )
.append(firstName, user.firstName)
.append(lastName, user.lastName)).isEquals( );
}
return equals;
}
}
重写hashCode方法:
public int hashCode( ) {
return new HashCodeBuilder(17, 37)
.append(firstName)
.append(lastName).toHashCode( );
}
HashCodeBuilder构造器需要两个int型数字,用来作为产生hash code的偏移量,两个数字必须是单数和非零值,还可以附加类的一些属性,如果你需要附加所有的属性,你可以简单的使用:
public int hashCode( ) {
return HashCodeBuilder.reflectionHashCode(this);
}
重写equals方法:
public boolean equals(Object o) {
boolean equals = false;
if ( o != null &&
User.class.isAssignableFrom(o) ) { //可以用o instanceof User代替
User user = (User) o;
equals = (new EqualsBuilder( )
.append(firstName, user.firstName)
.append(lastName, user.lastName)).isEquals( );
}
return equals;
}
}