Junior — Middle
Как е реализиран методът equals в Java и как се използва за сравняване на обекти?
sobes.tech AI
Отговор от AI
В Java методът equals() е дефиниран в класа Object и служи за сравняване на обекти по логическа равностойност. По подразбиране той сравнява референции (т.е. проверява дали две променливи сочат към един и същи обект).
За коректно сравняване на съдържанието на обектите, класовете обикновено преписват метода equals(), за да сравняват значимите полета на обектите.
Пример за преписване на equals():
@Override
public boolean equals(Object obj) {
if (this == obj) return true; // проверка за идентичност
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return Objects.equals(field1, other.field1) && field2 == other.field2;
}
Важно е, когато преписвате equals(), да преписвате и hashCode(), за да осигурите правилната работа на обектите в колекции, например в HashMap.
Използване:
MyClass a = new MyClass(...);
MyClass b = new MyClass(...);
if (a.equals(b)) {
// обектите се считат за равни по съдържание
}