Junior
Co dělá metoda equals()?
sobes.tech AI
Odpověď od AI
Metoda equals() v Javě porovnává dva objekty, zda jsou si rovny.
Ve výchozím nastavení (v třídě Object) kontroluje, zda jsou reference na objekty stejné (odkazují na stejný exemplář v paměti).
Třídy mohou tuto metodu přepsat, aby určily logickou rovnost objektů na základě jejich obsahu (například dva objekty String jsou považovány za rovné, pokud obsahují stejnou sekvenci znaků, i když jsou to různé instance).
Při přepisování equals() je také nutné přepsat metodu hashCode(), aby bylo zachováno následující pravidlo: pokud jsou dva objekty podle equals() rovné, jejich hashCode() musí vracet stejné hodnoty.
Příklad přepsání:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Porovnání odkazů
if (o == null || getClass() != o.getClass()) return false; // Kontrola null a typů
MyClass myClass = (MyClass) o; // Přetypování
return value == myClass.value; // Logické porovnání podle pole value
}
@Override
public int hashCode() {
return Objects.hash(value); // Generování hash kódu
}
}