Junior — Middle
Jak jest zaimplementowana metoda equals w języku Java i jak jest używana do porównywania obiektów?
sobes.tech AI
Odpowiedź od AI
W Javie metoda equals() jest zdefiniowana w klasie Object i służy do porównywania obiektów pod kątem równości logicznej. Domyślnie porównuje ona odwołania (czyli sprawdza, czy dwie zmienne wskazują na ten sam obiekt).
Aby poprawnie porównać zawartość obiektów, klasy zazwyczaj nadpisują metodę equals(), aby porównywać istotne pola obiektów.
Przykład nadpisania equals():
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // sprawdzenie tożsamości
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && field2 == other.field2;
}
Ważne jest, aby przy nadpisywaniu equals() nadpisać także hashCode(), aby zapewnić poprawne działanie obiektów w kolekcjach, np. w HashMap.
Użycie:
MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
// obiekty są uważane za równe pod względem zawartości
}