Sobes.tech
Junior — Middle

Poți explica ce înseamnă metoda equals în contextul comparării obiectelor în Java?

sobes.tech AI

Răspuns de la 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 позволяет сравнивать объекты по смыслу, а не по ссылке.