Junior — Middle
Kokiose situacijose turėtumėte perrašyti metodą equals Java kalboje teisingam objektų palyginimui?
sobes.tech AI
Atsakymas iš AI
Java kalboje equals metodą reikia perrašyti, kai norite apibrėžti savo kriterijus objektų lygybei jūsų klasėje, kurie skiriasi nuo standartinio palyginimo pagal nuorodą (kuris įgyvendintas Object).
Tai ypač svarbu, jei jūsų klasės objektai logiškai laikomi lygiais, kai tam tikri laukai sutampa, pavyzdžiui, Person klasėje, objektai laikomi lygiais, jei sutampa vardas ir gimimo data.
Equals metodą būtina perrašyti, kad:
- Teisingai palygintumėte objektus pagal turinį.
- Užtikrintumėte teisingą kolekcijų, tokių kaip HashSet ar HashMap, veikimą, kurios naudoja equals, kad nustatytų unikalumą.
Perrašant equals, taip pat svarbu perrašyti hashCode, kad būtų laikomasi šių metodų sutarties.
Pavyzdys equals ir hashCode perrašymo:
@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);
}