Junior — Middle
Můžete vysvětlit, co znamená metoda equals v kontextu porovnávání objektů v Javě?
sobes.tech AI
Odpověď od AI
V jazyce Java se metoda equals používá k porovnání obsahu dvou objektů na rovnost. Ve výchozím nastavení, pokud není přepsána, metoda equals třídy Object porovnává reference, tj. kontroluje, zda obě proměnné ukazují na stejný objekt v paměti.
Pro porovnání objektů podle hodnoty (například podle polí třídy) je třeba metodu equals přepsat. Je důležité dodržovat její kontrakt: měla by být reflexivní, symetrická, tranzitivní, konzistentní a neměla by být rovna null.
Příklad přepsání equals ve třídě Person:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // porovnání se sebou samým
if (obj == null || getClass() != obj.getClass()) return false;
Person other = (Person) obj;
return age == other.age && Objects.equals(name, other.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
Tímto způsobem equals umožňuje porovnávat objekty podle jejich obsahu, nikoli podle reference.