读书人

:java equals方法

发布时间: 2013-02-24 17:58:56 作者: rapoo

高手请进:java equals方法
如题:在继承代码中如何写equals()使该方法满足以下规范:

1 自反性 x.equals(x) 为true

2 对称性 x.equals(y)==y.equals(x)

3 传递性 x.equals(y) y.equals(z)则x.equals(z) java equals
[解决办法]

引用:
引用:前提不满足了,比较的两个对象一个是ColorPoint,一个是Point,而前者比较时又必须考虑color因素,对称性肯定满足不了了

effect java中提到过吧是的,但是equals()方法并不是只有相同类型才能比较,毕竟他的参数是object

但这些特性(反身,对称,传递等)是equals的默认表现,也就是当equals是Object的方法,且其参数也是Object时才可拥有,因为比较双方都是Object,是同一个type,一旦被覆盖,类型不一致的比较双方虽然仍可比较是否相等,但原来的特性恐将不保。

读书人网 >软件架构设计

热点推荐