Sobes.tech
Назад к вопросам
Junior — Middle
62

Какие отличия между аннотациями @Value и @Data в библиотеке Lombok?

Компании, где спрашивали
СБЕР КорпусСБЕР Корпус

Ответ от нейросети

sobes.tech AI

Аннотация @Data в Lombok генерирует для класса:

  • геттеры и сеттеры для всех полей,
  • методы equals(), hashCode(),
  • метод toString(),
  • конструктор по умолчанию,
  • и RequiredArgsConstructor (конструктор для final полей).

Аннотация @Value делает класс неизменяемым (immutable):

  • все поля private и final,
  • генерирует только геттеры (без сеттеров),
  • генерирует equals(), hashCode(), toString(),
  • генерирует конструктор со всеми полями,
  • класс помечается как final.

Итого:

  • @Data — для изменяемых классов с полным набором методов.
  • @Value — для неизменяемых классов, где поля нельзя менять после создания.

Пример:

@Data
class User {
    private String name;
    private int age;
}

@Value
class ImmutableUser {
    String name;
    int age;
}