org.apache.commons.lang.builder包下的一些常用类的研究与应用

 

1CompareToBuilder 用于辅助实现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

2EqualsBuilder 用于辅助实现Object.equals()方法:

   (new  EqualsBuilder( ) .append(firstName, ps.firstName) .append(lastName, ps.lastName)).isEquals( );

如果两个对象相等当且仅当每个属性值都相等 EqualsBuilder.reflectionEquals( this , o);

3HashCodeBuilder – 用于辅助实现Object.hashCode()方法:

     new HashCodeBuilder(17, 37).append(firstName) .append(lastName).toHashCode( );---- HashCodeBuilder构造器需要两个int型数字,用来作为产生hash code的偏移量,两个数字必须是单数和非零值

    需要附加所有的属性HashCodeBuilder.reflectionHashCode(this)

4ToStringBuilder 用于辅助实现Object.toString()方法;

    new ToStringBuilder(this).append("name", name).append("age", age) .toString();

5ReflectionToStringBuilder使用反射机制辅助实现Object.toString()方法;

     ReflectionToStringBuilder.toString( this );

6ToStringStyle 辅助ToStringBuilder控制输出格式

new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) .append("name", name)

 .append("age", age).toString();

ToStringStyle类,代码中已经内置了5ToStringStyle.DEFAULT_STYLEToStringStyle.MULTI_LINE_STYLEToStringStyle.NO_FIELD_NAMES_STYLEToStringStyle.SHORT_PREFIX_STYLEToStringStyle.SIMPLE_STYLE内置类

7StandardToStringStyle – 辅助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("%");   

}  

你可能感兴趣的:(object,null,equals)