Java中可以重写equals
方法来比较两个对象是否相等。重写方法需要遵循如下规则:
自反性:对于任意非空引用值x,x.equals(x)应该返回true。
对称性:对于任意非空引用值x和y,x.equals(y)应该和y.equals(x)返回的结果相同。
传递性:对于任意非空引用值x、y和z,如果x.equals(y)返回true,并且y.equals(z)返回true,那么x.equals(z)也应该返回true。
与null比较:对于任意非空引用值x,x.equals(null)应该返回false。
这里是一个示例重写equals方法:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof MyClass)) {
return false;
}
MyClass c = (MyClass) o;
return c.value == this.value;
}
}
默认情况下,Object类中的equals方法比较的是对象的内存地址,但是通常我们并不需要这样。所以需要重写这个方法来比较对象的内容。