Sobes.tech
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)) {
    // обектите се считат за равни по съдържание
}