介紹
在Java編程中,經常需要比較兩個對象是否相等。這時就需要使用到equal方法。equal方法是Object類中的方法,用於比較兩個對象是否相等。但是在實際開發中,我們需要根據具體情況對equal方法進行重寫。
重寫equal方法的原因
因為Object類中的equal方法只是簡單地比較兩個對象是否是同一對象。這種比較是通過比較兩個對象在內存中的存儲地址來實現的。而在實際應用中,我們需要比較的通常是兩個對象的屬性值是否相等。
因此,我們需要在實體類中重寫equal方法,以便比較兩個實體類對象是否相等。Java中的String和包裝類已經重寫了equal方法,可以直接使用其equal方法進行比較。
重寫equal方法的實現
1、比較兩個引用指向的對象是否相等
public class Person { private String name; private int age; // 省略getter和setter方法 // 重寫equal方法 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (age != person.age) return false; return name.equals(person.name); } }
2、比較兩個對象屬性值是否相等
public class Person { private String name; private int age; // 省略getter和setter方法 // 重寫equal方法 @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (age != person.getAge()) return false; return name != null ? name.equals(person.getName()) : person.getName() == null; } }
注意事項
在重寫equal方法時,需要遵循以下注意事項:
1、使用instanceof關鍵字判斷類型是否一致
在進行類型轉換時,需要使用instanceof關鍵字判斷類型是否一致以及是否為空。
if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o;
2、使用Objects.equals方法比較屬性值是否相等
在比較屬性值時,需要使用Objects.equals方法進行比較。這是因為name對象可能為null,如果使用「==」比較將會拋出空指針異常。
if (age != person.getAge()) return false; return Objects.equals(name, person.getName());
小結
equal方法是Java中比較兩個對象是否相等的方法,但是在實際開發中需要進行equal方法的重寫以便比較兩個對象的屬性值是否相等。在重寫equal方法時需要注意類型轉換的問題以及屬性值的比較問題。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/187921.html