greatjone

          BlogJava 聯系 聚合 管理
            7 Posts :: 24 Stories :: 3 Comments :: 0 Trackbacks

          通過commons-lang.jar包實現一個javabean的equals,hashCode和toString三個方法,一般情況下,用手工直接實現這三個方法比較繁瑣,
          而采用common-lang.jar實現起來就比較容易了。下面即是其實現的具體代碼:

           1package per.jone;
           2import java.util.Date;
           3import org.apache.commons.lang.builder.EqualsBuilder;
           4import org.apache.commons.lang.builder.HashCodeBuilder;
           5import org.apache.commons.lang.builder.ToStringBuilder;
           6public class MyBean {
           7    private Date date;
           8    private String str;
           9    private int age;
          10    
          11    public MyBean(Date date, String str, int age) {
          12        super();
          13        this.date = date;
          14        this.str = str;
          15        this.age = age;
          16    }

          17    public Date getDate() {
          18        return date;
          19    }

          20    public void setDate(Date date) {
          21        this.date = date;
          22    }

          23    public String getStr() {
          24        return str;
          25    }

          26    public void setStr(String str) {
          27        this.str = str;
          28    }

          29    public int getAge() {
          30        return age;
          31    }

          32    public void setAge(int age) {
          33        this.age = age;
          34    }

          35    
          36    @Override
          37    public boolean equals(Object obj) {
          38        if(obj==null){
          39            return false;
          40        }

          41        if(obj==this){
          42            return true;
          43        }

          44        if(obj.getClass()!=this.getClass()){
          45            return false;
          46        }

          47        MyBean mb = (MyBean)obj;
          48        return new EqualsBuilder().append(this.date, mb.getDate()).append(this.str, mb.getStr())
          49               .append(this.age, mb.getAge()).isEquals();
          50    }

          51    
          52    @Override
          53    public int hashCode() 
          54        return new HashCodeBuilder(17,37).append(this.date).append(this.str).append(this.age).toHashCode();
          55        //注意:HashCodeBuilder這個構造器的兩個參數必須為奇數。
          56    }

          57    
          58    @Override
          59    public String toString() {
          60        return new ToStringBuilder(this).append("date",this.date).append("str",this.str).append("age",this.age).toString();
          61    }

          62}

          我們可以看到依然需要手動維護這么多的屬性,在common-lang.jar包里面還可通過反射機制來實現這三個方法,便于代碼的維護,具體實現如下:

           1@Override
           2    public boolean equals(Object obj) {
           3        return EqualsBuilder.reflectionEquals(this, obj);
           4    }

           5    @Override
           6    public int hashCode() {
           7        return HashCodeBuilder.reflectionHashCode(this);
           8    }

           9    @Override
          10    public String toString() {
          11        return ToStringBuilder.reflectionToString(this);
          12    }
              
          posted on 2010-10-17 10:58 jone 閱讀(1851) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 永修县| 巫山县| 巴林左旗| 渝北区| 六盘水市| 辉南县| 墨脱县| 扎囊县| 兰州市| 正定县| 辰溪县| 沙雅县| 石景山区| 十堰市| 黑水县| 杂多县| 阿合奇县| 曲麻莱县| 手游| 清原| 望都县| 平泉县| 繁峙县| 鹿泉市| 九寨沟县| 永福县| 杭锦后旗| 交口县| 个旧市| 鹤岗市| 富平县| 方正县| 文山县| 山阴县| 金堂县| 德令哈市| 宣城市| 湘乡市| 通江县| 阿克苏市| 平泉县|