Sobes.tech
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
    }
}