Junior
Šta radi metoda equals()?
sobes.tech АИ
Одговор од АИ
Metoda equals() u Javi poredi dva objekta da bi proverila da li su jednaki.
Po default-u (u klasi Object), proverava da li su reference na objekte iste (da li ukazuju na isti primer u memoriji).
Klase mogu redefinisati ovu metodu da odrede logičku jednakost objekata na osnovu njihovog sadržaja (npr., dva String objekta se smatraju jednakim ako sadrže istu sekvencu karaktera, čak i ako su različiti primerci).
Prilikom redefinisanja equals(), potrebno je takođe redefinisati i metodu hashCode(), da bi se održao sledeći dogovor: ako su dva objekta jednaka prema equals(), njihovi hashCode() moraju vraćati iste vrednosti.
Primer redefinisanja:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Poređenje referenci
if (o == null || getClass() != o.getClass()) return false; // Provera null i tipova
MyClass myClass = (MyClass) o; // Kastovanje
return value == myClass.value; // Logičko poređenje po polju value
}
@Override
public int hashCode() {
return Objects.hash(value); // Generisanje hash koda
}
}