equals 方法
对于任何一个类来说,都有equals 方法。因为它们都继承子Object这个超类。但是,并不是所有类的equals方法都会比较对象的状态;只有重写了Object的equals方法的子类,才会比较内容,而非单单的引用地址。
如何重写equals方法呢?
对4)的补充:
重写equals方法还需要再重写 hashcode方法?
是的。
因为,当对象在 set 中存储的时候,set依靠的是对象的hashcode来确定存储地址的,如果你在重写了equals的对象中不重写hashcode方法,那么当你存放两个此类型相等的对象,set 也不会拒绝。因为你所谓相等的对象的hashcode并不相同。所以,一旦重写了equals方法,就必须重写hashcode方法。
幸运的是,现在的 ide 都支持自动重写,我们只要记住这个原则,对ide重写的代码稍作检查即可。