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

В чем разница между @Value и @Data в Lombok

@Value и Data – аннотации Lombok для сокращения кода, но с разной семантикой:

@Value
Создает immutable-класс (все поля final). Генерирует:

  • Геттеры (но не сеттеры)
  • equals(), hashCode(), toString()
  • Конструктор для всех полей

Пример:

java
@Value
public class Point {
    int x;
    int y;
}
// Point immutable = new Point(1, 2);

@Data
Для mutable-классов. Генерирует:

  • Геттеры и сеттеры
  • equals(), hashCode(), toString()
  • Конструктор для всех final-полей (если нет других конструкторов)

Пример:

java
@Data
public class Person {
    private String name;
    private int age;
}
// Person p = new Person(); p.setName("Alice");

Ключевые отличия:

  • @Value – для неизменяемых объектов, @Data – для изменяемых
  • @Value делает все поля final по умолчанию
  • @Data генерирует сеттеры, @Value – нет
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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