转载自:http://www.oschina.net/question/82993_75533
在这篇文章中,我将告诉大家我对hashCode和equals方法的理解。我将讨论他们的默认实现,以及如何正确的重写他们。我也将使用Apache Commons提供的工具包做一个实现。
目录:
- hashCode()和equals()的用法
- 重写默认实现
- 使用Apache Commons Lang包重写hashCode()和equals()
- 需要注意记住的事情
- 当使用ORM的时候特别要注意的
hashCode()和equals()定义在Object类中,这个类是所有java类的基类,所以所有的java类都继承这两个方法。
使用hashCode()和equals()
hashCode()方法被用来获取给定对象的唯一整数。这个整数被用来确定对象被存储在HashTable类似的结构中的位置。默认的,Object类的hashCode()方法返回这个对象存储的内存地址的编号。
重写默认的实现
如果你不重写这两个方法,将几乎不遇到任何问题,但是有的时候程序要求我们必须改变一些对象的默认实现。
来看看这个例子,让我们创建一个简单的类Employee
04 |
private String
firstname; |
05 |
private String
lastName; |
06 |
private String
department; |
08 |
public Integer
getId() { |
11 |
public void setId(Integer
id) { |