不要忘记遵守
Object#equals(Object o)合同
指示其他某个对象是否与此对象“相等”。equals方法对非null对象引用实现对等关系:
这是自反的:对于任何非空参考值x,x.equals(x)应该返回true。
它是对称的:对于x和y的任何非空引用值,当且仅当y.equals(x)返回true时,x.equals(y)才返回true。
它是可传递的:对于x,y和z的任何非空引用值,如果x.equals(y)返回true,而y.equals(z)返回true,则x.equals(z)应该返回true。
这是一致的:对于任何非空引用值x和y,如果未修改对象的equals比较中使用的信息,则多次调用x.equals(y)始终返回true或始终返回false。
对于任何非空参考值x,x.equals(null)应该返回false。类Object的equals方法在对象上实现了最有区别的对等关系。也就是说,对于任何非空参考值x和y,当且仅当x和y引用同一个对象(x
== y的值为true)时,此方法才返回true。请注意,通常有必要在重写此方法时重写hashCode方法,以维护hashCode方法的常规协定,该协定规定相等的对象必须具有相等的哈希码。



