Встречается на собеседованиях • сегодня

В чем разница между @EqualsAndHashCode Lombok и сгенерированной IDE

@EqualsAndHashCode от Lombok автоматически генерирует equals() и hashCode() на основе всех полей класса (по умолчанию). IDE (например, IntelliJ) тоже генерирует эти методы, но с ключевыми отличиями:

  1. Контроль полей: Lombok включает все поля по умолчанию, а IDE позволяет выбрать конкретные поля при генерации.
  2. Аннотации: Lombok использует аннотации (@EqualsAndHashCode.Exclude для исключения полей), а IDE модифицирует код напрямую.
  3. Обновление: Lombok динамически обновляет методы при изменении полей, а IDE требует повторной генерации.

Пример с Lombok:

java
@EqualsAndHashCode
public class User {
    private String name;
    private int age;
}

Пример с IDE:

java
public class User {
    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;
        User user = (User) o;
        return age == user.age && Objects.equals(name, user.name);
    }

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

Lombok лаконичнее, но IDE дает больше контроля.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы