在建立實(shí)體對(duì)象之前,可以先實(shí)現(xiàn)一個(gè)公共的實(shí)體對(duì)象基類.在這個(gè)基類對(duì)象中可以包含代表每一個(gè)實(shí)體對(duì)象唯一的
標(biāo)識(shí) 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()方法,用于判斷兩個(gè)對(duì)象是否相等,但并不是在使用"=="進(jìn)行兩個(gè)對(duì)象是否相等的判斷時(shí)調(diào)用.因?yàn)槭褂?=="所判斷的是兩個(gè)對(duì)象的引用是否相等,也可以簡(jiǎn)單理解為兩個(gè)實(shí)例所引用的是否為內(nèi)存中的同一個(gè)對(duì)象.equals()方法可以理解為兩個(gè)對(duì)象在"含義"上是否相等,也就是說(shuō)這兩個(gè)對(duì)象所表達(dá)的意思是否相同.equals()方法在對(duì)象保存到集合容器類(Collection)中時(shí)被調(diào)用.因?yàn)榧先萜黝惒辉试S其中存在兩個(gè)相同對(duì)象實(shí)例,其判斷的依據(jù)就是通過(guò)調(diào)用該實(shí)體對(duì)象的equals()方法來(lái)進(jìn)行判斷的.
如果修改了equals()方法,就必須修改hashCode()方法.如果不這樣的話,就違反java.lang.Object的通用的hashCode的約定,從而導(dǎo)致該類無(wú)法與基于散列值的集合類一起正常工作.
toString()方法,用于將當(dāng)前Java對(duì)象的實(shí)例轉(zhuǎn)換為可以描述其內(nèi)容的字符串.這個(gè)方法的作用是在程序調(diào)試的過(guò)程可以方便地得到實(shí)體對(duì)象中令人感興趣的信息,有利于更準(zhǔn)確及時(shí)地發(fā)現(xiàn)程序中的問(wèn)題.