为什么要重写Object的equals()方法???
1、Object中的equals()方法源码
public boolean equals(Object obj) {
return (this == obj);
}
- java中的“==”是判断两个对象引用的地址是否相同,从Object中的equals()方法的源码看出,若两个对象的引用地址相同返回值为true,否则返回false!
2、为什么要重写父类的equals()方法
在多数情况下,我们希望两个实例对象的的属性相同就认为这两个对象相等。
例如:
person p1 = new person(1,"name");
person p2 = new person(1,"name");
若直接通过Object的equals()方法,将返回false,因此我们需要重写父类的equals()方法:
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
sutdent sutdent = (sutdent) o;
return age == sutdent.age && Objects.equals(name, sutdent.name);
}
重写后将得到我们预期的结果。