Java / Lombok Interview questions
How do you combine Lombok's @Builder with inheritance?
Plain @Builder doesn't naturally handle a subclass adding its own fields on top of a parent
class's builder — by default, each class's @Builder only knows about that class's own
fields. Lombok's @SuperBuilder annotation exists specifically to solve this, generating a builder
that's aware of, and can be extended by, subclasses.
@SuperBuilder public class Vehicle { protected String make; } @SuperBuilder public class Car extends Vehicle { private int doors; } Car c = Car.builder() .make("Toyota") // inherited from Vehicle's builder .doors(4) .build();
Both the parent and every subclass in the hierarchy need @SuperBuilder (not the plain
@Builder) for this chaining to work correctly — mixing plain @Builder on a
parent with @SuperBuilder on a child (or vice versa) doesn't work, since they generate
incompatible builder implementations.
More Related questions...