每个对象都有一个预定义的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。