採用commons-lang.jar包實現equals,hashCode以及toString方法

 

通過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 {
7private Date date;
8private String str;
9private int age;
10
11public MyBean(Date date, String str, int age) {
12super();
13this.date = date;
14this.str = str;
15this.age = age;
16 }

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

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

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

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

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

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

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

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

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

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

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

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

62}

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

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

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

9 @Override
10public String toString() {
11return ToStringBuilder.reflectionToString(this);
12 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章