重写toString(),hashCode()和equals()的简便方法

重写toString(),hashCode()和equals()的简便方法

使用APACHE的LANG包中的相关类,可简写很多。


     public  String toString()  {   
        
return ToStringBuilder.reflectionToString(this,   
                ToStringStyle.MULTI_LINE_STYLE);   
    }
   
  
    
public   boolean  equals(Object o)  {   
        
return EqualsBuilder.reflectionEquals(this, o);   
    }
   
  
    
public   int  hashCode()  {   
        
return new HashCodeBuilder(1737)   
                    .append(id)   
                    .append(name)   
                    .append(state)   
                    .toHashCode();   
    }
  



如果PO中有SET的集合对象,并且配置了HIBERNATE中的lazy="true",则算HASHCODE不能用反射的方法,只能一个属性一个属性的累加计算HASHCODE,集合SET不算HASHCODE,否则会抛LazyInitializationException。继承的子类可以用这种方法加以覆盖:


public   int  hashCode()  {   
        
return new HashCodeBuilder(1737)   
                    .appendSuper(
super.hashCode())
                    .append(code)
                    .toHashCode();   
    }
 


你可能感兴趣的:(重写toString(),hashCode()和equals()的简便方法)