Java / Lombok Interview questions
What is the difference between @Data and @Value?
Both are convenience bundles that save you from applying several annotations individually, but they target
opposite design intents: @Data produces a mutable class; @Value produces an
immutable one.
| @Data | @Value |
| Fields stay mutable by default (non-final unless you mark them so). | Fields become final automatically; the class itself becomes final too. |
| Generates getters and setters. | Generates only getters, no setters. |
| Good fit for typical mutable POJOs, DTOs, JPA entities (with caution). | Good fit for immutable value objects (coordinates, money, IDs). |
@Data public class MutablePoint { private int x, y; } @Value public class ImmutablePoint { int x, y; }
More Related questions...