下面是为实现一个高质量equals方法的处方:
1、 使用==操作符检查“实参是否为指向对象的一个引用”。
2、 使用instanceof操作符检查“实参是否为正确的类型”。
3、 把实参转换到正确的类型。
4、 对于该类中的每一个“关键”域,检查实参中的域是否与当前对象中对应的域值匹配。数值可以直接使用==比较,实例可以使用field==null?o.field==null:field.equals(o.field)。
5、 当你编写完equals方法之后,应该问自己三个问题:他是否是对称的、传递的、一致的?
一些告戒:
1、 当你改写equals的时候,总要改写hashCode。
2、 不要企求你的equals方法过于繁杂(周全)。
3、 不要使equals方法依赖于不稳定的资源,比如transient类型。