2020-04-15 |

equals() 等于

每个对象都有一个预定义的equals()方法,用于语义相等测试。

但是,为了使它对我们的类有效,我们需要重写它并检查我们需要的条件。

生成equals()方法有一种简单而快速的方法,而不是手动编写它。

在类中单击鼠标右键,转到Source->Generate hashCode()和equals()。。。

这将自动创建必要的方法。

    class Animal {
        String name;
        Animal(String n) {
          name = n;
        }
        @Override
        public int hashCode() {
          final int prime = 31;
          int result = 1;
          result = prime * result + ((name == null) ? 0 : name.hashCode());
          return result;
        }
        @Override
        public boolean equals(Object obj) {
          if (this == obj)
            return true;
          if (obj == null)
            return false;
          if (getClass() != obj.getClass())
            return false;
          Animal other = (Animal) obj;
          if (name == null) {
            if (other.name != null)
              return false;
          } else if (!name.equals(other.name))
            return false;
          return true;
        }
      }

自动生成的hashCode()方法用于确定在内部存储对象的位置。无论何时实现equals,都必须同时实现hashCode。

我们可以使用equals方法再次运行测试:

public static void main(String[ ] args) {
    Animal a1 = new Animal("Robby");
    Animal a2 = new Animal("Robby");
    System.out.println(a1.equals(a2));
}
// 输出 true

可以使用同一菜单生成其他有用的方法,例如类属性的getter和setter。

0

发表评论

    评价:
    验证码: 点击我更换图片
    最新评论