Sobes.tech
Junior

Методи equals() чӣ мекунад?

sobes.tech AI

Ҷавоб аз 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); // Генерація хеш-коду
    }
}