java中重写equals方法
的有关信息介绍如下:
如何正确的重写equals方法,应该遵循哪些原则
举例说明
public class Person {
String name;
int age;
public Person() {super();}
public Person(String name, int age) {super();this.name = name;this.age = age;}
// 自己重写equals 方法public boolean equals(Object obj) {// 如果传进来的对象 地址值和我们当前的一样if (this == obj) {return true;}// 如果传进来的是null, 返回 falseif (obj == null) {return false;}
/** * 如果传进来的引用是一个人的类型,我们就将他的属性和 我们当前的属性进行比较 */if (obj instanceof Person) {// 将传进来的 强转成 人Person p = (Person) obj;// 比较各个属性值if (p.name.equals(name) && p.age == age) {return true;}return false;
}// 如果传进来的不是人类型 肯定也是falsereturn false;}
@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}
重写equals方法的要求:1、自反性:对于任何非空引用x,x.equals(x)应该返回true。2、对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。
3、传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true。4、一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果。5、非空性:对于任意非空引用x,x.equals(null)应该返回false。
eclipse给我们提供了重写的方法,点击source



