- 首先看源代码:
public boolean equals(Object obj) {
return (this == obj);
}
- 该方法的设计目的:编程过程当中,通过equals方法来判断两个对象是否相等。
- equals方法是判断两个对象是否相等,但是源码之中使用了“= =”,是不够用的,所以我们需要重写该方法。
- 当使用“= =”比较两个引用类型的对象时,比较的是他们在内存中的地址(可以理解为HashCode),哪怕是内容完全相同的两个对象,使用“= = ”比较时,结果也是false。
- 所以我们可以了解到这个方法明显是不够我们使用的,生成子类后需要重写此方法,虽说该方法是比较两个对象是否相等,但是什么是相等是可以由我们来自己定的。
- 下面展示一下该方法的重写:
public boolean equals(Object obj)
{
if(obj==null)
{
return false;
}
else if(obj==this)
{
return true;
}
else if(obj instanceof Student)
{
Student s1= (Student)obj;
return this.id== s1.id&&this.school.equals(s1.school);
}
return false;
}
特别说明一下,如果需要比较的对象中,包含有其他的类的对象,那么被包含的类中也需要重写equals方法。
idea中是有重写的快捷键的:Alt+Insert后