Junior — Middle
Jak je metoda equals implementována v jazyce Java a jak se používá k porovnávání objektů?
sobes.tech AI
Odpověď od AI
V jazyce Java je metoda equals() definována ve třídě Object a slouží k porovnání objektů z hlediska logické rovnosti. Ve výchozím nastavení porovnává odkazy (tj. kontroluje, zda dvě proměnné odkazují na stejný objekt).
Pro správné porovnání obsahu objektů třídy obvykle přepisují metodu equals(), aby porovnávaly významná pole objektů.
Příklad přepsání equals():
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // kontrola identity
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && field2 == other.field2;
}
Je důležité, aby při přepisování equals() bylo také přepsáno hashCode(), aby bylo zajištěno správné fungování objektů v kolekcích, například v HashMap.
Použití:
MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
// objekty jsou považovány za rovné podle obsahu
}