Junior
Ką daro metodas equals()?
sobes.tech AI
Atsakymas iš AI
Java equals() metodas lygina du objektus, kad nustatytų jų lygybę.
Pagal numatytuosius nustatymus (klase Object) jis tikrina, ar nuorodos į objektus yra tokios pačios (ar nurodo į tą patį pavyzdį atmintyje).
Klasės gali perrašyti šį metodą, kad nustatytų loginę objektų lygybę remiantis jų turiniu (pavyzdžiui, du String objektai laikomi lygiais, jei jie turi tą pačią simbolių seką, net jei tai skirtingi pavyzdžiai).
Perrašant equals() taip pat būtina perrašyti hashCode() metodą, kad būtų laikomasi šios sutarties: jei du objektai yra lygūs pagal equals(), jų hashCode() turi grąžinti tas pačias reikšmes.
Pavyzdys:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Nuorodų palyginimas
if (o == null || getClass() != o.getClass()) return false; // Null ir tipų patikrinimas
MyClass myClass = (MyClass) o; // Tipas
return value == myClass.value; // Loginė palyginimas
}
@Override
public int hashCode() {
return Objects.hash(value); // Hash kodo generavimas
}
}