什么时候重写equal方法

2021-07-25  本文已影响0人  蜗牛写java

重写equal场景

原则上不重写equal方法;

但是当一个类

  1. 包含一个逻辑相等的概念时,
  2. 而这个逻辑相等又有别于对象标识(Object类的equal方法默认比较的是对象标识),
  3. 而且父类又没有重写equal方法的时候;如:Integer、String等

重写equal有哪些约定

重写equal错误示例

//错误方式;因为参数类型不是Object类型,那么就不是重写 Object 类中的 方法;只不过是重载而已
public boolean equal(Integer i){
  ...
}

//正确写法
@Override
public boolean equal(Object object) {
  if (object == this) {
    return true;
  }
  if (!(object instanceof MyType)) {
    return false;
  }
  if (object.hashCode() != this.hashCode()) {
    return false;
  }
  //值比较...
}

重写equal注意点

上一篇 下一篇

猜你喜欢

热点阅读