Junior — Middle
Millistes olukordades tuleks Java-s meetodit equals üle kirjutada, et objekti õigesti võrrelda?
sobes.tech AI
Vastus AI-lt
Java-s peab equals meetod olema üle kirjutatud, kui soovite määratleda oma kriteeriumid oma klassi objektide võrdlemiseks, mis erinevad vaikimisi viite põhjalisest võrdlusest (mida rakendatakse Object-is).
See on eriti oluline, kui teie klassi objektid loogiliselt peetakse võrdseteks, kui teatud väljad kattuvad, näiteks Person klassis peetakse objekte võrdseteks, kui nimi ja sünnikuupäev kattuvad.
Equals meetodi üle kirjutamine on vajalik, et:
- Õigesti võrrelda objekte sisu järgi.
- Tagada HashSet või HashMap kogumite õige toimimine, mis kasutavad equals, et määrata elementide unikaalsus.
Equals meetodi üle kirjutamisel on oluline ka üle kirjutada hashCode, et säilitada nende meetodite vahelise lepingu nõuetekohane järgimine.
Näide equals ja hashCode meetodite üle kirjutamisest:
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return Objects.equals(name, person.name) && Objects.equals(birthDate, person.birthDate);
}
@Override
public int hashCode() {
return Objects.hash(name, birthDate);
}