- 浏览: 268044 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xurun:
点击节点的时候出错,怎么办??1120行,data为空为或不是 ...
TreeGrid -
QQ371496669:
引用load方式检索不到的话会抛出org.hibernate. ...
Hibernate中No row with the given identifier exists -
汽车城路:
我现在正在使用这个Extjs,目前也遇到了这个问题,就是怎么换 ...
ext使用--Panel和iframe联合使用时页面高度的解决方法 -
jsjzhou:
有必要. 在实际项目我们就采用了HttpUrlConnecti ...
HttpURLConnection VS HttpClient性能测试 -
小猪笨笨:
不错,通俗易懂
在oracle中创建unique唯一约束(单列和多列)
在org.apache.commons.lang.builder包中一共有7个类,用于帮助实现Java对象的一些基础的方法,如compareTo(), equals(), hashCode(), toString()等。他们分别是:
CompareToBuilder – 用于辅助实现Comparable.compareTo(Object)方法;
EqualsBuilder – 用于辅助实现Object.equals()方法;
HashCodeBuilder – 用于辅助实现Object.hashCode()方法;
ReflectionToStringBuilder – 使用反射机制辅助实现Object.toString()方法;
ToStringBuilder – 用于辅助实现Object.toString()方法;
StandardToStringStyle – 辅助ToStringBuilder控制标准格式;
ToStringStyle – 辅助ToStringBuilder控制输出格式。
import java.util.Date; 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.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.apache.commons.lang.builder.StandardToStringStyle; public class BuilderTest { public static void main(String[] args) { Person person1 = new Person("郑致力", 32, new Date()); Person person2 = new Person("高婕", 27, new Date()); System.out.println("person1's info: " + person1); System.out.println("person2's info: " + person2); System.out.println("person1's hash code: " + person1.hashCode()); System.out.println("person2's hash code: " + person2.hashCode()); System.out.println("person1 equals person2? " + person1.equals(person2)); System.out.println("--------------More String Style of Object ------------------------------------"); System.out.println("person1's info: " + person1.toString2(ToStringStyle.MULTI_LINE_STYLE)); System.out.println("person1's info: " + person1.toString2(ToStringStyle.NO_FIELD_NAMES_STYLE)); System.out.println("person1's info: " + person1.toString2(ToStringStyle.SHORT_PREFIX_STYLE)); System.out.println("person1's info: " + person1.toString2(ToStringStyle.SIMPLE_STYLE)); System.out.println("person1's info: " + person1.toString2(new StandardToStringStyle())); } } class Person implements Comparable { private String name; private int age; private Date dateJoined; public Person() { }; public Person(String name, int age, Date dateJoined) { this.name = name; this.age = age; this.dateJoined = dateJoined; } public int compareTo(Object o) { if (!(o instanceof Person)) { return -1; } Person other = (Person) o; return new CompareToBuilder().append(name, other.getName()).append(age, other.getAge()).append(dateJoined, other.getDateJoined()) .toComparison(); } public boolean equals(Object o) { if (!(o instanceof Person)) { return false; } Person other = (Person) o; return new EqualsBuilder().append(name, other.getName()).append(age, other.getAge()).append(dateJoined, other.getDateJoined()) .isEquals(); } //注:两个equlas为true的对象在这里会被计算成不同的hash码,慎用 public int hashCode() { return new HashCodeBuilder().append(name).append(age) .append(dateJoined).toHashCode(); } public String toString() { return new ToStringBuilder(this).append("name", name) .append("age", age).append("dateJoined", dateJoined).toString(); } public String toString2(ToStringStyle style) { ToStringStyle _style = ToStringStyle.DEFAULT_STYLE; if (null != style) { _style = style; } return new ToStringBuilder(this, _style).append("name", name) .append("age", age).append("dateJoined", dateJoined).toString(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Date getDateJoined() { return dateJoined; } public void setDateJoined(Date dateJoined) { this.dateJoined = dateJoined; } }
这些builder用起来很简单,只要new一个实例,append需要参与的信息,然后加上toComparison、isEquals、toHashCode、toString结尾就可以了。如果不需要使用append指定信息,则可直接使用反射机制进行自动化实现,如下面的Student类:
class Student extends Person { private int grad; public Student() {super();} public Student(String name, int age, Date dateJoined, int grad) { super(name, age, dateJoined); this.grad = grad; } public int compareTo(Object o) { return CompareToBuilder.reflectionCompare(this, o); } public boolean equals(Object o) { return EqualsBuilder.reflectionEquals(this, o); } public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } public String toString() { return ReflectionToStringBuilder.toString(this); } }
这里需要补充一点,对于ToStringStyle类,代码中已经内置了5种,分别为ToStringStyle.DEFAULT_STYLE、ToStringStyle.MULTI_LINE_STYLE、ToStringStyle.NO_FIELD_NAMES_STYLE、ToStringStyle.SHORT_PREFIX_STYLE、ToStringStyle.SIMPLE_STYLE。不知道为什么,这5种内置类的实现都被定义成了private static final类了。所以如果上述5种类不能满足你的要求的话,想继承他们是不可能的。所以你需要创建StandardToStringStyle一个实例,然后调用它的方法来实现自定义的格式。在StandardToStringStyle的单元测试代码中,是这样调用的:
private static final StandardToStringStyle STYLE = new StandardToStringStyle(); static { STYLE.setUseShortClassName(true); STYLE.setUseIdentityHashCode(false); STYLE.setArrayStart("["); STYLE.setArraySeparator(", "); STYLE.setArrayEnd("]"); STYLE.setNullText("%NULL%"); STYLE.setSizeStartText("%SIZE="); STYLE.setSizeEndText("%"); STYLE.setSummaryObjectStartText("%"); STYLE.setSummaryObjectEndText("%"); }
发表评论
-
ConcurrentHashMap与CopyOnWriteArrayList比较。
2010-12-14 10:24 1708ConcurrentHashMap ConcurrentH ... -
Servlet与Struts action线程安全问题分析
2010-03-24 19:45 1283Servlet/JSP技术和ASP、PHP等相比,由于其多线程 ... -
JVM调优
2010-03-24 19:37 1143原文: http://blog.csdn.net/tyrone ... -
HttpURLConnection VS HttpClient性能测试
2010-03-16 14:19 9001版本: HttpURLConnection jdk1.6;H ... -
jdk 1.6新特性
2010-02-03 09:27 36762006 年底,Sun 公司发布了 Java Standard ... -
REST是什么
2009-11-06 18:27 1208REST架构风格是全新的针对Web应用的开发风格,是当今世界最 ... -
jira企业版linux下安装和破解
2009-08-07 13:42 57221、下载地址:http://www.atlassian.com ... -
log4j输出到文件和数据库
2009-05-20 21:07 4630官方API地址:http://logging.apache.o ... -
Log4j详细配置
2009-05-19 10:51 928一、前言: log4j 是一个开放源码项目,是广泛 ... -
ANT-build.xml文件详解
2009-03-12 13:54 1557Ant的概念 可能有些读者并不连接什么是Ant以及 ... -
tomcat配置说明和内存扩容
2009-03-05 14:37 24831. 如何加大tomcat连接数 在tomcat配置文件ser ... -
ehCache在acegi中的应用
2009-03-03 16:56 2897EhCache一般用途如下:Hibernate缓存,DA ... -
特殊字符转义
2009-02-24 10:52 1012请看附件图片。 -
Eclipse快捷键大全
2009-02-16 15:06 878Eclipse中自定义设置快捷键: Window --> ... -
Mime类型收集
2009-02-12 15:41 1023网方网站:http://www.mimetype.org/ ... -
lukeall-0.8.1.jar Lucene索引查看工具
2008-12-30 12:54 7167lukeall-0.8.1.jar 在windows下双击, ... -
EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展(下)
2008-12-29 17:13 8560有时候,你想让数据库,而非JVM,来替你完成一些计算,也 ... -
EJB3.0-JPA实体的注解规范以及Hibernate特有的扩展(上)
2008-12-29 15:45 4090本章内容覆盖了EJB ... -
常见异常解析
2008-12-29 11:36 11621. java.lang.nullpointerexce ... -
java(Web)中相对路径,绝对路径问题
2008-11-28 11:51 18341.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或 ...
相关推荐
org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder....
org.apache.commons.lang.builder.ToStringStyle$NoFieldNameToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder....
import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder;
org.apache.commons.lang jar包
标题中的"org.apache.commons.lang包"指的是该库的主要命名空间,它包含了各种实用工具类,如字符串处理、日期时间操作、类型转换等。 在描述中提到,解压缩Apache Commons Lang资源包后,我们可以获取到几个关键...
这个`org.apache.commons.lang.jar`文件是该库的一个版本,包含了Lang项目的所有包,使得开发者在处理字符串、日期、数字、反射、比较等方面的工作变得更加便捷高效。以下是关于Apache Commons Lang的一些关键知识点...
在给定的标题 "org.apache.commons.lang3.StringUtils.jar.rar" 中,我们可以看到这个压缩包包含的是 `StringUtils.jar`,实际上它是一个 `common-lang3.jar` 文件的别名。这个 JAR 包是 Apache Commons Lang 项目的...
org.apache.commons.lang.builder.ToStringStyle$ShortPrefixToStringStyle.class org.apache.commons.lang.builder.ToStringStyle$SimpleToStringStyle.class org.apache.commons.lang.builder.ToStringStyle.class...
java包。 import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder;
org.apache.commons.lang.builder org.apache.commons.lang.enum org.apache.commons.lang.enums org.apache.commons.lang.exception org.apache.commons.lang.math org.apache.commons.lang.mutable org....
2.1.1.3 org.apache.commons.lang.builder 这个包主要是为了提供对象构建和比较的工具,如ToStringBuilder、HashCodeBuilder和EqualsBuilder,它们帮助开发者生成对象的toString、hashCode和equals方法,避免了重复...
import org.apache.commons.lang.builder.HashCodeBuilder; public class EqualsHashCodeExample { private int id; private String name; public EqualsHashCodeExample(int id, String name) { this.id = id...
2. **org.apache.commons.lang.builder**:该包提供了一系列用于快速生成Java类中常见的方法(如`toString()`、`hashCode()`、`equals()`)的工具类。 3. **org.apache.commons.lang.enum**:这是一个旧的枚举处理包...
│ │ │ frame-sourcefiles-org.apache.ibatis.builder.annotation.html │ │ │ frame-sourcefiles-org.apache.ibatis.builder.html │ │ │ frame-sourcefiles-org.apache.ibatis.builder.xml.html │ │ │ ...
《Apache Commons Lang 3.1:Java编程的强大工具》 Apache Commons Lang 是一个Apache软件基金会提供的Java类库,专门用于处理日常编程任务。这个库包含了大量实用的工具类,极大地扩展了Java的标准库,其中的版本...
6. **对象工具**:`org.apache.commons.lang3.builder`提供了对象比较、深拷贝等实用工具,如`EqualsBuilder`和`HashCodeBuilder`用于实现自定义的equals()和hashCode()方法。 7. **异常处理**:`org.apache....
Apache Commons Lang 3.7 包含多个子包,如 `org.apache.commons.lang3`, `org.apache.commons.lang3.builder`, `org.apache.commons.lang3.text` 等,每个子包都专注于特定的功能领域。例如,`builder` 包提供了...
import org.apache.commons.lang.builder.HashCodeBuilder; // ... @Override public boolean equals(Object obj) { if (obj instanceof Person) { Person rhs = (Person) obj; return new EqualsBuilder()....
import org.apache.commons.lang.builder.HashCodeBuilder; public class TUserPK implements Serializable { private String firstname; private String lastname; public String getFirstname() { return ...