天天看点

改写equals的时候请遵循通用约定

改写equals的时候请遵循通用约定:

1.自反性(reflexive)。对于任意的引用值x,x.equals(x)一定为ture;

2.对称性(symmetric).对于任意的应用值 x和y,当且仅当y.equals(x)返回true时,x.equals(y)也一定返回true;

3.传递性(transitive).对于任意的引用值x,y,z.如果x.equals(y)返回true,并且y.equals(z)也返回true,那么x.equals(z)也一定返回true;

4.一致性(consistent).对于任意的引用值x和y,如果用于equals比较的对象信息没有被修改的话,那么,多次调用x.equals(y)要么一致返回true,要么一致返回false。

5.对于任意的非空引用值x。x.equals(null)一定返回false。