一个公共的实体对象基类

来源:互联网 发布:acrobat x pro for mac 编辑:程序博客网 时间:2024/04/30 00:36
在建立实体对象之前,可以先实现一个公共的实体对象基类.在这个基类对象中可以包含代表每一个实体对象唯一的
标识 id 属性,以及一些公用的方法.具体如下

BaseModel.java

import java.io.Serializable;

import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;

public class BaseModel implements Serializable{

 /**
  * The Generated SerialVersionUID
  */
 private static final long serialVersionUID = 7766184319541530720L;
 
 /**
  * The identify of the object
  */
 private String id;

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }
 
 /**
  * Common implement equals method
  */
 public boolean equals( Object obj )
 {
  if( this==obj ) return true;
  
  if( !( obj instanceof BaseModel ) )
   return false;
  
  BaseModel target = (BaseModel)obj;
  
  if( this.getId()!=null && this.getId().length()>0 )
  {
   return this.getId().equals( target.getId() );
  }
  
  if( target.getId()!=null && target.getId().length()>0 )
  {
   return false;
  }
  
  return EqualsBuilder.reflectionEquals(this, obj);
 }

 /**
  * Generate the hash code
  */
 public int hashCode()
 {
  if( this.getId()!=null && this.getId().length()>0 )
  {
   return this.getId().hashCode();
  }
   
  return HashCodeBuilder.reflectionHashCode(this);
 }

 /**
  * Common implement toString method
  */
 public String toString()
 {
  return ReflectionToStringBuilder.toString( this );
 }
}
         equals()方法,用于判断两个对象是否相等,但并不是在使用"=="进行两个对象是否相等的判断时调用.因为使用"=="所判断的是两个对象的引用是否相等,也可以简单理解为两个实例所引用的是否为内存中的同一个对象.equals()方法可以理解为两个对象在"含义"上是否相等,也就是说这两个对象所表达的意思是否相同.equals()方法在对象保存到集合容器类(Collection)中时被调用.因为集合容器类不允许其中存在两个相同对象实例,其判断的依据就是通过调用该实体对象的equals()方法来进行判断的.
         如果修改了equals()方法,就必须修改hashCode()方法.如果不这样的话,就违反java.lang.Object的通用的hashCode的约定,从而导致该类无法与基于散列值的集合类一起正常工作.
         toString()方法,用于将当前Java对象的实例转换为可以描述其内容的字符串.这个方法的作用是在程序调试的过程可以方便地得到实体对象中令人感兴趣的信息,有利于更准确及时地发现程序中的问题.

 
原创粉丝点击