Junior — Middle
Ar galite paaiškinti, ką reiškia metodas equals Java objektų palyginimo kontekste?
sobes.tech AI
Atsakymas iš AI
Java kalboje equals metodas naudojamas dviejų objektų turinio palyginimui lygybės tikslu. Pagal numatytuosius nustatymus, jei jis nėra perrašytas, Object klasės equals metodas lygina nuorodas, tai yra, patikrina, ar abi kintamosios nurodo į tą patį objektą atmintyje.
Norint palyginti objektus pagal reikšmę (pavyzdžiui, pagal klasės laukus), reikia perrašyti equals metodą. Svarbu laikytis metodo sutarties: jis turi būti refleksyvus, simetriškas, tranzityvus, nuoseklus ir neturi būti lygus null.
Pavyzdys, kaip perrašyti equals Person klasėje:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // palyginimas su pačiu savimi
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return age == other.age && Objects.equals(name, other.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Šiuo būdu equals leidžia palyginti objektus pagal jų turinį, o ne pagal nuorodą.