`

jakarta commons lang:HashCodeBuilder和EqualsBuilder

阅读更多
在判断两个对象是否相等的时候,会先调用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;

    }

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics