自动生成ToString、equals、hashcode、compareTo方法的commons4e插件和commonclipse插件,

在实际的开发中总是有重写从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文件或者在代码编辑页面右键均可)


 

 

posted on 2013-01-11 11:25  小-强-斋-太  阅读(1611)  评论(0编辑  收藏  举报

导航