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
}
}