1、CompareToBuilder – 用于辅助实现Comparable.compareTo(Object)方法:
用于比较两个对象所有的非static和非transient成员变量
CompareToBuilder.reflectionCompare( this , obj);
( new CompareToBuilder( ) .append(firstName, pc.firstName)
.append(lastName, pc.lastName)).toComparison( );// 后加入的先比较的次序
实现compareTo()的时候应保证和equals()规则相同,即当compareTo()返回是0的时候equals()应该返回true
2、EqualsBuilder – 用于辅助实现Object.equals()方法:
(new EqualsBuilder( ) .append(firstName, ps.firstName) .append(lastName, ps.lastName)).isEquals( );
如果两个对象相等当且仅当每个属性值都相等 EqualsBuilder.reflectionEquals( this , o);
3、HashCodeBuilder – 用于辅助实现Object.hashCode()方法:
new HashCodeBuilder(17, 37).append(firstName) .append(lastName).toHashCode( );---- HashCodeBuilder构造器需要两个int型数字,用来作为产生hash code的偏移量,两个数字必须是单数和非零值
需要附加所有的属性HashCodeBuilder.reflectionHashCode(this)
4、ToStringBuilder – 用于辅助实现Object.toString()方法;
new ToStringBuilder(this).append("name", name).append("age", age) .toString();
5、ReflectionToStringBuilder – 使用反射机制辅助实现Object.toString()方法;
ReflectionToStringBuilder.toString( this );
6、ToStringStyle – 辅助ToStringBuilder控制输出格式
new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("name", name)
.append("age", age).toString();
ToStringStyle类,代码中已经内置了5种ToStringStyle.DEFAULT_STYLE、ToStringStyle.MULTI_LINE_STYLE、ToStringStyle.NO_FIELD_NAMES_STYLE、ToStringStyle.SHORT_PREFIX_STYLE、ToStringStyle.SIMPLE_STYLE内置类
7、StandardToStringStyle – 辅助ToStringBuilder控制标准格式。
上述5种类不能满足你的要求的话,想继承他们是不可能的(final类)。所以你需要创建StandardToStringStyle一个实例,然后调用它的方法来实现自定义的格式
private static final StandardToStringStyle STYLE = new StandardToStringStyle();
static {
STYLE.setUseShortClassName(true);
STYLE.setUseIdentityHashCode(false);
STYLE.setArrayStart("[");
STYLE.setArraySeparator(", ");
STYLE.setArrayEnd("]");
STYLE.setNullText("%NULL%");
STYLE.setSizeStartText("%SIZE=");
STYLE.setSizeEndText("%");
STYLE.setSummaryObjectStartText("%");
STYLE.setSummaryObjectEndText("%");
}