Sobes.tech
Back to questions
Junior — Middle
90

Когда рекомендуется реализовывать метод equals() в классе?

Companies where asked
Ifellow

Answer from AI

sobes.tech AI

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

Это важно, если:

  • Класс представляет сущность с логическим смыслом равенства (например, пользователь, продукт).
  • Объекты будут использоваться в коллекциях, где важна корректная проверка равенства, например, в HashSet, HashMap.

Пример реализации equals() и hashCode() для класса Person:

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

Если equals() не переопределить, сравнение объектов будет по ссылке, что часто не соответствует бизнес-логике.