equals方法的实现建议(Java核心技术 卷一P172)
1.显示参数命名为otherObject
2.检测this
与otherObject
是否引用同一个对象:
if (this == otherObject)
return true;
3.检测otherObject是否为null,如果为null,返回false,这一项很有必要
if (otherObject == null)
return false;
4.比较this
与otherObject
是否属于同一个类,如果每个子类中的equals
有所变化,使用getClass
检测
if (getClass() != otherObject.getClass())
return false;
如果所有子类有统一的语义,就是用instanceof
检测:
if (!(otherObject instanceof ClassName))
return false;
5.将otherObject
转换为相应的类类型变量
ClassName other = (ClassName)otherObject;
6.现在对所需要比较的域进行比较,使用==
比较基本类型域, 使用equals
比较对象域,所有域都匹配,就返回true
,否则返回false
。