Junior — Middle
Ako je metóda equals implementovaná v jazyku Java a ako sa používa na porovnávanie objektov?
sobes.tech AI
Odpoveď od AI
V Jave je metoda equals() definovaná v triede Object a slúži na porovnávanie objektov z hľadiska logickej rovnosti. Predvolene porovnáva referencie (t.j. kontroluje, či dve premenné ukazujú na ten istý objekt).
Pre správne porovnanie obsahu objektov, triedy zvyčajne prepíšu metódu equals(), aby porovnávali významné polia objektov.
Príklad prepísania 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 pri prepísaní equals() bolo tiež prepísané hashCode(), aby objekty správne fungovali v kolekciách, napríklad v HashMap.
Použitie:
MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
// objekty sú považované za rovnaké podľa obsahu
}