Back to questions
СБЕР Корпус
Junior — Middle
61
Какие отличия между аннотациями @Value и @Data в библиотеке Lombok?
Companies where asked
Answer from AI
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;
}