Назад к вопросам
Junior
72
questionbank

Что делает метод equals()?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Метод equals() в Java сравнивает два объекта на равенство.

По умолчанию (в классе Object), он проверяет, являются ли ссылки на объекты одинаковыми (ссылаются ли они на один и тот же экземпляр в памяти).

Классы могут переопределять этот метод, чтобы определить логическое равенство объектов на основе их содержимого (например, два объекта String считаются равными, если содержат одинаковую последовательность символов, даже если это разные экземпляры).

При переопределении equals() необходимо также переопределить метод hashCode(), чтобы соблюдалось соглашение: если два объекта равны согласно equals(), то их методы hashCode() должны возвращать одинаковые значения.

Пример переопределения:

class MyClass {
    private int value;

    public MyClass(int value) {
        this.value = value;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true; // Сравнение ссылок
        if (o == null || getClass() != o.getClass()) return false; // Проверка на null и сравнение типов
        MyClass myClass = (MyClass) o; // Приведение типа
        return value == myClass.value; // Логическое сравнение по полю value
    }

    @Override
    public int hashCode() {
        return Objects.hash(value); // Генерация хэш-кода
    }
}