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