Sobes.tech
Junior

Co robi metoda equals()?

sobes.tech AI

Odpowiedź od AI

Metoda equals() w Javie porównuje dwa obiekty, aby sprawdzić, czy są równe.

Domyślnie (w klasie Object) sprawdza, czy odwołania do obiektów są takie same (czy wskazują na ten sam egzemplarz w pamięci).

Klasy mogą nadpisywać tę metodę, aby określić logiczną równość obiektów na podstawie ich zawartości (np. dwa obiekty String są uważane za równe, jeśli zawierają tę samą sekwencję znaków, nawet jeśli są różnymi instancjami).

Przy nadpisywaniu equals() konieczne jest również nadpisanie metody hashCode(), aby zachować następującą zasadę: jeśli dwa obiekty są równe według equals(), to ich metody hashCode() powinny zwracać te same wartości.

Przykład nadpisania:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Porównanie referencji
        if (o == null || getClass() != o.getClass()) return false; // Sprawdzenie null i typów
        MyClass myClass = (MyClass) o; // Rzutowanie
        return value == myClass.value; // Logiczne porównanie po polu value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Generacja hashCode
    }
}