Java / Lombok Interview questions
What is @Value used for?
@Value is the immutable counterpart to @Data: it makes the class and all its
fields final by default, generates getters (but no setters), a constructor covering every field,
toString(), and equals()/hashCode() — producing a fully immutable
value object from a single annotation.
@Value public class Point { int x; int y; } // fields become private final; only getters are generated, no setters; // class itself becomes final
It's the right fit for genuinely immutable value types (coordinates, money amounts, identifiers) where you
want the compiler to enforce that instances can't change after construction, rather than relying on discipline
to avoid calling setters that technically exist, as would be the case with a mutable @Data class.
More Related questions...