Java / Lombok Interview questions
What is @With used for?
@With generates a "wither" method — a method that returns a new instance of the class
with one field changed and every other field copied unchanged from the original, which is the standard pattern
for "updating" an immutable object without mutating it.
@Value @With public class Point { int x; int y; } Point p1 = new Point(1, 2); Point p2 = p1.withX(5); // new Point(5, 2); p1 itself is unchanged
It's the natural companion to @Value-style immutable classes: since you can't set a field
directly on an immutable object, @With gives you a clean, named way to derive a modified copy
instead, which is the idiomatic pattern for working with immutable data.
More Related questions...