Junior — Middle
Je možné použiť metódu equals bez jej predchádzajúceho prepísania v triede?
sobes.tech AI
Odpoveď od AI
Áno, metóda equals môže byť použitá bez jej prepísania, pretože je zdedená od triedy Object. Avšak v tomto prípade bude správanie metódy štandardné: porovnanie odkazov na objekty (t.j. kontrola, či dve premenné ukazujú na ten istý objekt v pamäti).
Ak je potrebné porovnávať objekty podľa obsahu (napríklad podľa hodnôt polí), je potrebné metódu equals v triede prepísať. Bez prepísania nebude porovnanie fungovať tak, ako sa očakáva pre logicky rovnaké objekty.
Príklad:
class Person {
String name;
Person(String name) { this.name = name; }
}
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
System.out.println(p1.equals(p2)); // false, ak `equals` nie je prepísané
Aby porovnanie podľa obsahu fungovalo, je potrebné prepísať equals a hashCode.