Date类重写了生成hash码的方法,以系统时间为参照生成当前对象的hash码,因此,如果在同一时间做new Date()操作,那么在这个运算下生成的hashCode就是相等,因此在Date类重写的equals方法中做判断返回的值也是true。
public
int
hashCode() {
long
ht =
this
.getTime();
return
(
int
) ht ^ (
int
) (ht >>
32
);
}
|
Date源码中比较两个对象是否相等的equals方法如下
1
2
3
|
public
boolean
equals(Object obj) {
return
obj
instanceof
Date && getTime() == ((Date) obj).getTime();
}
|