什么情况下需要重写equals()方法?
在比较两个两个对象时,可以使用==和equals()。前者可以理解为潜比较,既比较对象的引用地址是否相等。后者属于深比较,比较的是两个对象的引用所指向的内容是否相等。
在Object类中已经定义了equals()方法,但该方法是直接采用==操作符实现的,因此子类如果不重写此方法,那么该方法的比较结果和==是一样的。为了方便的比较两个对象的内容是否相等,在定义类的时候一般建议重写此方法。
如何重写equals()方法?
在重写一个类的equals方法之前,要理解两个对象在什么情况下才完全>相等。
重写equals()方法的实例代码如下:
public class Person {
private String id;
private String name;
public String getId() {
return id;
}
public String getName() {
return name;
}
//覆盖equals方法
public boolean equals(Object o) {
if(o == null) {
return false;
}
if(this == o) {
return true;
}
if(this.getClass() != o.getClass()) {