如何正確的重寫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