要求
-
1.自反性 当x不为null时,x.equal(x)为true
-
2.对称性 x.equal(y)位true,那么y.equal(x)为true;
-
3.传递性 x.equal(y)为true,x.equal(z)为true,那么y.equal(z)为true.
-
4.一致性 如果两个对象相等,他们就必须始终保持相等
-
5.非空性
实现与优化
- 1.使用==操作符检查是否相等
- 2.使用instanceof操作符来检查"参数是否为正确类型"
- 3.把参数转化为正确的类型.
- 4.对于该类中的每个"关键"域,检查参数中的域是否与该对象中对应的域相匹配.
- 5.编写完成后,查看方法的对称性,一致性,传递性
告诫
-
覆盖equals是要覆盖hasCode方法
-
不要企图让equals方法过于智能;让equal方法做简单的事情就行
-
不要将equals申明中的Object对象换为其他类型.