Sobes.tech
Junior — Middle
94

Mik a különbségek az @Value és @Data annotációk között a Lombok könyvtárban?

Cégeket kérdeztek
СБЕР КорпусСБЕР Корпус

Válasz az MI-től

sobes.tech MI

Аннотация @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;
}