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()方法;
newToStringBuilder(this).append("name",name).append("age",age).toString();
5、ReflectionToStringBuilder – 使用反射机制辅助实现Object.toString()方法;
ReflectionToStringBuilder.toString(this);
6、ToStringStyle – 辅助ToStringBuilder控制输出格式
newToStringBuilder(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一个实例,然后调用它的方法来实现自定义的格式
privatestaticfinalStandardToStringStyleSTYLE=newStandardToStringStyle();
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("%");
} |