Junior — Middle
Môžete vysvetliť, čo znamená metóda equals v kontexte porovnávania objektov v Jave?
sobes.tech AI
Odpoveď od AI
V Jave sa metoda equals používa na porovnanie obsahu dvoch objektov na rovnosť. Predvolene, ak nie je prepísaná, metoda equals z triedy Object porovnáva referencie, teda kontroluje, či obe premenné ukazujú na ten istý objekt v pamäti.
Pre porovnanie objektov podľa hodnoty (napríklad podľa polí triedy) je potrebné prepísať metódu equals. Je dôležité dodržiavať jej zmluvu: mala by byť reflexívna, symetrická, tranzitívna, konzistentná a nemala by byť rovná null.
Príklad prepísania equals v triede Person:
public class Person {
private String name;
private int age;
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // porovnanie so 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 spôsobom equals umožňuje porovnávať objekty podľa ich obsahu, nie podľa referencie.