HashCodeBuilder、EqualsBuilder的用法

本文介绍了一种在Java中实现equals和hashCode方法的最佳实践,通过使用Apache Commons Lang库中的EqualsBuilder和HashCodeBuilder来简化比较逻辑,确保了对象一致性的同时提高了代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

用法很简单的。  
  给你举个例子,结合EqualsBuilder的用法

package   com.bryantd.hibernate.entity;   
    
  
import   java.io.Serializable;   
  
import   java.util.*;   
    
  
import   org.apache.commons.lang.builder.EqualsBuilder;   
  
import   org.apache.commons.lang.builder.HashCodeBuilder;   
    
  
public   class   Address   implements   Serializable   ...{   
  
private   Integer   id;   
  
private   String   address;   
  
private   String   telephone;   
    
  
private   User   user;   
    
  
public   Address(String   address,   String   telephone)   ...{   
  
super();   
  
//   TODO   Auto-generated   constructor   stub   
  this.address   =   address;   
  
this.telephone   =   telephone;   
  }
   
    
  
public   Address()   ...{}   
    
  
public   String   getAddress()   ...{   
  
return   address;   
  }
   
  
public   void   setAddress(String   address)   ...{   
  
this.address   =   address;   
  }
   
    
  
public   Integer   getId()   ...{   
  
return   id;   
  }
   
  
public   void   setId(Integer   id)   ...{   
  
this.id   =   id;   
  }
   
    
  
public   String   getTelephone()   ...{   
  
return   telephone;   
  }
   
  
public   void   setTelephone(String   telephone)   ...{   
  
this.telephone   =   telephone;   
  }
   
    
  
public   User   getUser()   ...{   
  
return   user;   
  }
   
  
public   void   setUser(User   user)   ...{   
  
this.user   =   user;   
  }
   
    
  
public   boolean   equals(Object   object)   ...{   
  
if   (!(object   instanceof   Address))   ...{   
  
return   false;   
  }
   
  Address   anotherAddress   
=   (Address)object;   
  
return   new   EqualsBuilder().appendSuper(super.equals(object))   
                                                      .append(
this.getAddress(),   anotherAddress.getAddress())   
                                                      .append(
this.getTelephone(),   anotherAddress.getTelephone())   
                                                      .isEquals();   
  }
   
    
  
public   int   hashCode()   ...{   
  
return   new   HashCodeBuilder().appendSuper(super.hashCode())   
                                                          .append(
this.getAddress())   
                                                          .append(
this.getTelephone())   
                                                          .hashCode();   
  }
   
    
  
/**//*   
  public   boolean   equals(Object   object)   {   
  //   TODO   Auto-generated   method   stub   
  if   (onject   ==   this)   {   
          return   true;   
  }   
  if   (object   instanceof   Address)   {   
  Address   address   =   (Address)object;   
  if   (getAddress()   ==   address.getAddress())   return   true;   
  }   
  return   false;   
  }   
    
  public   int   hashCode()   {   
  //   TODO   Auto-generated   method   stub   
  return   getTelephone().hashCode()   *   getAddress().hashCode();   
  }   
  
*/
   
  }
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值