下面是为实现一个高质量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类型

评论
lingzantia 2008-03-11
用common-lang的equalsbuilder和tostringbuilder hashcodebuilder,写个模板,然后就方便了.
gordon@java 2008-03-11
这个有问题

2、 使用instanceof操作符检查“实参是否为正确的类型”。
发表评论

提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则

您还没有登录,请登录后发表评论

beyondqinghua
搜索本博客
最近加入圈子
存档
最新评论