Sobes.tech
Junior — Middle

Можете ли да обясните какво означава методът equals в контекста на сравняването на обекти в Java?

sobes.tech AI

Отговор от AI

В Java методът equals се използва за сравняване на съдържанието на два обекта за равенство. По подразбиране, ако не бъде презаписан, методът equals от класа Object сравнява референциите, тоест проверява дали и двете променливи сочат към един и същи обект в паметта.

За да сравнявате обекти по стойност (например, по полетата на класа), трябва да презапишете метода equals. Важно е да спазвате контракта на метода: той трябва да бъде рефлексивен, симетричен, транзитивен, последователен и да не е равен на null.

Пример за презаписване на equals в класа Person:

public class Person {
    private String name;
    private int age;

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true; // сравнение със себе си
        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);
    }
}

По този начин, equals позволява сравняване на обекти по смисъл, а не по референция.