Junior
Čo robí metóda equals()?
sobes.tech AI
Odpoveď od AI
Metóda equals() v Jave porovnáva dva objekty, či sú rovnaké.
Predvolene (v triede Object) kontroluje, či referencie na objekty ukazujú na ten istý exemplár v pamäti (čiže či odkazujú na rovnaký objekt).
Triedy môžu túto metódu prepísať, aby určili logickú rovnosť objektov na základe ich obsahu (napríklad, dva objekty String sa považujú za rovnaké, ak obsahujú rovnakú sekvenciu znakov, aj keď sú to rôzne inštancie).
Pri prepísaní equals() je tiež potrebné prepísať metódu hashCode(), aby sa zachovalo nasledujúce pravidlo: ak sú dva objekty rovnaké podľa equals(), ich hashCode() musia vracať rovnaké hodnoty.
Príklad prepísania:
class MyClass {
private int value;
public MyClass(int value) {
this.value = value;
}
@Override
public boolean equals(Object o) {
if (this == o) return true; // Porovnanie referencií
if (o == null || getClass() != o.getClass()) return false; // Kontrola null a typov
MyClass myClass = (MyClass) o; // Pretypovanie
return value == myClass.value; // Logické porovnanie podľa poľa value
}
@Override
public int hashCode() {
return Objects.hash(value); // Generovanie hash kódu
}
}