Junior — Middle
Kādās situācijās būtu jāpārraksta metode equals Java, lai pareizi salīdzinātu objektus?
sobes.tech AI
Atbilde no AI
Java valodā metode equals jābūt pārrakstītam, ja vēlaties definēt savus kritērijus objektu vienādībai jūsu klasē, kas atšķiras no standarta salīdzinājuma pēc atsauces (kas ir īstenots Object).
Tas ir īpaši svarīgi, ja jūsu klases objekti tiek uzskatīti par loģiski vienādiem, ja atbilstošie lauki sakrīt, piemēram, Person klasē, objekti tiek uzskatīti par vienādiem, ja sakrīt vārds un dzimšanas datums.
Equals metodes pārrakstīšana ir nepieciešama, lai:
- Pareizi salīdzinātu objektus pēc satura.
- Nodrošinātu pareizu kolekciju, piemēram, HashSet vai HashMap, darbību, kas izmanto equals, lai noteiktu elementu unikālitāti.
Pārrakstot equals, ir arī svarīgi pārrakstīt hashCode, lai ievērotu šo metožu līgumu.
Equals un hashCode piemērs:
@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);
}