在实际的开发中总是有重写从Object类所继承的equals()、hashCode()和toString()等方法的需求,实现这个需求的代码烦琐且无技术含量,编写不当还容易出现不易发现的错误。为了更加方便地实现这些方法,可以使用Apache Commons Lang组件builder包中的帮助类。
在org.apache.commons.lang.builder这个包中一共有7个类,其说明如表所示。
类 名 | 说 明 |
CompareToBuilder | 用于辅助实现Comparable接口的compareTo()方法 |
EqualsBuilder | 用于辅助实现Object类equals()方法 |
HashCodeBuilder | 用于辅助实现Object类hashCode()方法 |
ToStringBuilder | 用于辅助实现Object类toString()方法 |
ReflectionToStringBuilder | 借助反射机制辅助实现Object类toString()方法 |
ToStringStyle | 辅助ToStringBuilder控制输出样式 |
StandardToStringStyle | 辅助ToStringBuilder控制输出标准样式 |
这些类的用法均不复杂,创建一个对象后根据实际开发的需要调用若干个append()方法,然后调用toString()、isEquals()、toHashCode()和toComparison()等方法即可。
同时为了进一步方便使用Apache Commons Lang的builder包中的类,还可以使用Eclipse的插件commons4e或者Commonclipse。他们利用Apache Commons lang builder来自动生成toString()、hashcode()、equals()和compareTo()方法的代码。
一、commons4e插件
commons4e插件可以帮助你自动生成ToString、equals、hashcode等方法,而且可以由你来自定义根据哪些字段生成这些方法,是一个比较不错的插件。该插件生成代码实现是基于apache commons lang项目。你的项目必须包含commons-lang.jar包
方法一
请先下载eclipse插件,点击此处下载。下载后将解压后的文件夹中的下面3个文件拷贝到
C:\Program Files\MyEclipse 6.5\eclipse\plugins下面即可
方法二:Myeclipse在线安装:
Help-->Software Updates-->find and install-->select for new features to install-->new remote site
URL填入下面的地址http://commons4e.berlios.de/updatesite31/
测试
安装完成后,在代码中右键菜单,效果如下:
使用很方便 右键==>commons4e 然后选择你要的功能就OK了
生成的代码如下:
package hdty.system.flow.vo;
import org.apache.commons.lang.builder.CompareToBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
public class Person implements Comparable<Person> {
private String name;
private String age;
@Override
public boolean equals(final Object other) {
if (!(other instanceof Person))
return false;
Person castOther = (Person) other;
return new EqualsBuilder().append(name, castOther.name).append(age,
castOther.age).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(name).append(age).toHashCode();
}
public int compareTo(final Person other) {
return new CompareToBuilder().append(name, other.name).append(age,
other.age).toComparison();
}
@Override
public String toString() {
return new ToStringBuilder(this).append("name", name)
.append("age", age).toString();
}
}
参考:
http://www.blogjava.net/xmatthew/archive/2008/04/03/190508.html
http://hi.baidu.com/juntao_li/item/addce6cec668b03f45941608
二、commonclipse插件
commonclipse是为jakarta commons-lang用户提供的eclipse 插件。它可以使用commons-lang生成器自动生成下列方法:toString(), hashCode(), equals(Object), compareTo(Object)。
下载地址 http://sourceforge.net/projects/commonclipse/
下载后将解压后的features和plugins拷贝到MyEclipse 6.5\eclipse,合并即可。效果如下(右键java文件或者在代码编辑页面右键均可)