- 浏览: 597695 次
- 性别:
- 来自: 安徽
文章分类
最新评论
-
jianxin1009:
你说的答案是对的
Re: 一道微软的面试题(年薪40万) -
thrillerzw:
应该相信爱情
忽然相信爱情。。。 -
weng:
jaxchow 写道mikeandmore 写道我觉得国外之所 ...
国外项目的代码质量真是高啊 -
cinhoo:
怎么也应该叫大蛇蛋才对嘛
lazypy 这个小蛇蛋不错 -
rosolio:
这个怎么解决?
Hibernate Annotation的中@ManyToOne和CascadeType问题
jakarta-commons-lang已经实现了HashCodeBuilder类,据闻在Hibernate中出错,所以还是选择了自己实现,编码思想来源于 Effective java 一书。而且0依赖。
测试代码
java 代码
- import java.lang.reflect.Array;
- public class HashCodeBuilder {
- public HashCodeBuilder() {
- }
- private int result = 17;
- public HashCodeBuilder append(boolean field) {
- result = 37 * result + (field ? 1 : 0);
- return this;
- }
- public HashCodeBuilder append(byte field) {
- result = 37 * result + (int) field;
- return this;
- }
- public HashCodeBuilder append(char field) {
- result = 37 * result + (int) field;
- return this;
- }
- public HashCodeBuilder append(short field) {
- result = 37 * result + (int) field;
- return this;
- }
- public HashCodeBuilder append(int field) {
- result = 37 * result + field;
- return this;
- }
- public HashCodeBuilder append(long field) {
- result = 37 * result + (int) (field ^ (field >>> 32));
- return this;
- }
- public HashCodeBuilder append(float field) {
- result = 37 * result + Float.floatToIntBits(field);
- return this;
- }
- public HashCodeBuilder append(double field) {
- append(Double.doubleToLongBits(field));
- return this;
- }
- public HashCodeBuilder append(Object field) {
- if(field == null)
- result = 0;
- else if (field.getClass().isArray()) {
- for (int i = Array.getLength(field) - 1; i >= 0; i--) {
- append(Array.get(field, i));
- }
- } else
- append(field.hashCode());
- return this;
- }
- public int toHashCode() {
- return result;
- }
- @Override
- public int hashCode() {
- return result;
- }
- @Override
- public String toString() {
- return String.valueOf(result);
- }
- }
测试代码
java 代码
- public class MyBean {
- Long id;
- String name;
- char[] chars;
- public MyBean(Long id, String name, char[] chars) {
- super();
- this.id = id;
- this.name = name;
- this.chars = chars;
- }
- @Override
- public int hashCode() {
- return new HashCodeBuilder().append(id)
- .append(name).append(chars).hashCode();
- }
- public static void main(String[] args) {
- MyBean bean1 = new MyBean(Long.valueOf(10),
- "名称",new char[]{'a','b','c','d','e'});
- MyBean bean2 = new MyBean(Long.valueOf(10),
- "名称",new char[]{'a','b','c','d','e'});
- System.out.println("bean1.hashCode="+bean1.hashCode());
- System.out.println("bean2.hashCode="+bean2.hashCode());
- }
- }
评论
2 楼
jasongreen
2007-03-15
我没有用过common-lang,不是太清楚,我最近在写crazyPOJO的项目,通过Annotation标志value field,然后根据value field生成hashCode,生成equals,生成clone,生成toString,生成toXML,生成toJSON,进行中,今天已经实现了,hashCode和equals,clone等方法,一会上传,大家试用一下
1 楼
v38
2007-03-14
<br/>
<strong>jasongreen 写道:</strong><br/>
<div class='quote_div'>jakarta-commons-lang已经实现了HashCodeBuilder类,据闻在Hibernate中出错,所以还是选择了自己实现,编码思想来源于 Effective java 一书。而且0依赖。<br/>
==========================</div>
<div class='quote_div'>jakarta-commons-lang已实现的HashCodeBuilder类的错误没有把我们给折磨死~</div>
<div class='quote_div'><br/>
<br/>
<br/>
<br/>
</div>
<strong>jasongreen 写道:</strong><br/>
<div class='quote_div'>jakarta-commons-lang已经实现了HashCodeBuilder类,据闻在Hibernate中出错,所以还是选择了自己实现,编码思想来源于 Effective java 一书。而且0依赖。<br/>
==========================</div>
<div class='quote_div'>jakarta-commons-lang已实现的HashCodeBuilder类的错误没有把我们给折磨死~</div>
<div class='quote_div'><br/>
<br/>
<br/>
<br/>
</div>
发表评论
-
jvm调优经验
2010-04-23 17:50 965转自一个没写地址的网站,所以我也写他的网址了,肯定不是他们原创 ... -
jvm优化配置
2010-04-23 17:38 1108JVM优化配置《一》 OOM ... -
国外项目的代码质量真是高啊
2010-03-27 02:19 2645近期有幸承接到了一个 ... -
django做的那么好,我还有必要维护做java版lightmtv的吗?
2009-03-22 21:07 2205我一直想做web框架,后来做了lightmtv。 做的终于有 ... -
AOP不就是HOOK嘛
2008-10-07 16:20 1235AOP就是HOOK 炒概念,大忽悠 -
Hibernate各模块之间应注意兼容性
2008-09-10 16:11 1473http://www.hibernate.org/6.htm ... -
让runjettyrun可以修改运行中的项目
2008-07-30 16:53 1917最近使用runjettyrun 替代了jettylaucher ... -
你认为java适合开发互联网网站吗?
2008-07-21 13:44 4143我这里说的互联网网站指的是拥有很大并发访问量的互联网网站,并且 ... -
Person对象中"姓-名"的设计及中英习惯不同的问题
2008-06-25 11:42 1462以前一直用 FirstName,LastName来进行设计,一 ... -
Maven-Ant-Task 使用手记
2008-04-15 15:51 7644Maven的依赖管理的确是个好东西。但在集成构建方面,Ant显 ... -
对象关联关系
2008-03-04 15:03 2634双向关联,lazy Global Refrence Key, ... -
给国人的CTE的一些建议
2008-01-17 10:45 2808非常好的项目,首先他是中国人开发的,太棒了! http://w ... -
Hibernate ? ActiveRecord ? pretty code!
2008-01-09 22:44 2348看到了段代码,贴出来聊聊 public class Per ... -
官方Annotations文档中文版
2007-12-30 12:03 2604以下几个Java官方文档描述了一些java区别于其他语言的特殊 ... -
Holder模式
2007-04-28 15:33 1930程序经常需要用到配置文件,但我们又并不想关心何时读取配置文件, ... -
获取java heap 大小
2007-04-09 14:28 2605The heap is the area in memory ... -
运行web项目的几种方法
2007-04-02 16:56 40251. 使用tomcat plugin,eclipse 插件,可 ... -
也论java加壳
2007-03-18 14:15 13055在C世界,对代码进行加 ... -
如何取得某个包下面的所有的Class对象
2007-03-17 14:18 4241查看了javadoc,google了,没有找到好的答案,有个例 ... -
请大家试用,疯狂POJO,crazyPOJO-0.0.1
2007-03-15 23:14 4420什么是crazyPOJO? 是一个基于jdk5 annotat ...
相关推荐
描述中的"hashCodeBuilder EqualsBuilder ToStringBuilder"提到了三个关键的类,它们都是Apache Commons Lang中用于构建对象哈希码、比较平等性和生成字符串表示的重要工具。 1. **HashCodeBuilder**: 在Java中,`...
**HashCodeBuilder** 类简化了hashCode方法的编写过程,同样通过链式调用来计算对象的哈希值。 ##### ToStringBuilder **ToStringBuilder** 类简化了toString方法的编写过程,可以通过添加不同的属性来构建字符串...
Commons Lang.jar是Apache Commons Lang项目的主库文件,它包含了许多实用的类和方法,使得开发者在编写Java代码时可以更加高效。这个库已经被广泛地应用于各种Java项目中,成为了许多开发者不可或缺的工具。 2.1....
为了确保一致性,推荐使用Apache Commons Lang库中的`HashCodeBuilder`类来生成高质量的`hashCode`值。 - **基于排序二叉树的实现**:`TreeMap`和`TreeSet`采用红黑树数据结构实现,这要求集合中的元素必须具备可...
3. **编写实体类**:实体类中需要包含复合主键对象以及其他属性。 下面通过具体实例来详细讲解这些步骤。 #### 三、实例分析 假设我们有一个用户表`t_user`,其中包含三个字段:`firstname`、`lastname`和`age`。...
10. **Object utilities**:`Objects`类提供了通用的对象操作,例如`EqualsBuilder`和`HashCodeBuilder`用于构建更安全的equals()和hashCode()方法。 11. **Functional programming**:`Function`、`Predicate`和`...
这些工具类大大扩展了Java标准库的功能,避免了大量重复代码的编写,同时为开发者提供了更多灵活的编程手段。在实际应用中,合理使用Apache Commons库的工具类可以大幅减少开发成本和错误率。在项目中直接使用...
在实际开发中,Apache Commons Lang 3.5 可以极大地提高代码的可读性和可维护性,减少重复的代码编写,使得开发更加高效。这个版本还修复了一些已知的问题,提升了性能和稳定性,确保了与其他库的兼容性。 总之,...
- **解决方案**:利用 Commons Lang 的 `HashCodeBuilder` 类自动生成这两个方法。 - **讨论**: - `HashCodeBuilder` 可以根据类中的字段生成正确的哈希码值。 - 同时,通过 `EqualsBuilder` 类可以确保 `equals...
2. 自动生成Equals和HashCode方法:遵循Java Bean规范,基于类的属性生成Equals和HashCode方法,确保对象比较的正确性,同时避免了因手动编写而可能出现的错误。 3. 自动更新:当类新增或删除字段时,插件能自动...
通过以上介绍,我们可以看出Apache Commons项目中的各个库都提供了非常实用的功能,可以帮助开发者更加高效地编写代码。无论是字符串处理、日期时间操作还是集合管理,这些工具类都能极大地提高开发效率并减少出错的...
这里使用了`Objects.equals()`和`Objects.hash()`方法来简化`equals`和`hashCode`方法的编写。另外,也可以通过引入Apache Commons Lang库中的`EqualsBuilder`和`HashCodeBuilder`来进一步简化代码: ```java ...
在实践中,为了代码的可读性和一致性,可以考虑使用Apache Commons Lang库的EqualsBuilder和HashCodeBuilder,或者使用Lombok库的@EqualsAndHashCode注解,它们可以帮助我们更方便地生成这些方法。 总的来说,重写...
Apache Commons Lang是一个非常重要的Java库,它为Java标准类库提供了许多实用的工具类和扩展。这个资源包包含了丰富的功能,极大地增强了...开发者可以通过使用它来编写更简洁、更易维护的代码,从而提高开发效率。
`EqualsBuilder` 和 `HashCodeBuilder` 则简化了自定义 `equals()` 和 `hashCode()` 方法的编写。 4. **数组操作**:`ArrayUtils` 提供了对 Java 数组的各种操作,包括添加、删除、填充、转换、比较等。它还提供了...
`Builder` 包中的类如 `ToStringBuilder`, `HashCodeBuilder` 提供了一种构建对象的toString()和hashCode()方法的简便方式,遵循了良好的编程实践。 9. **枚举工具** `EnumUtils` 提供了枚举相关的辅助方法,如...
总结,`common-lang3.jar`是Java开发者的得力助手,它提供的各种工具类极大地简化了代码编写,提升了开发效率。无论是字符串处理、日期操作,还是反射和异常处理,都体现了其强大的功能和易用性。在实际项目中,合理...
实现`equals()`和`hashCode()`的一个常见模式是使用Apache Commons Lang库的`EqualsBuilder`和`HashCodeBuilder`,它们可以简化代码并减少错误的可能性。 此外,还要注意`equals()`和`compareTo()`的区别。`...
`EqualsBuilder` 和 `HashCodeBuilder` 是 Apache Commons Lang 包中提供的两个工具类,用于简化 `equals()` 和 `hashCode()` 方法的实现。这些方法对于 Java 对象来说非常重要,尤其是在将对象放入集合(如 HashSet...
对于更复杂的数据格式,可以使用库如Apache Commons Lang的`EqualsBuilder`或`HashCodeBuilder`,或者使用Google的Guava库的`Equivalence`类来比较对象的属性。对于CSV数据,Apache Commons CSV库可以帮助我们解析...