Prev Next

Java / Lombok Interview questions

What is @Accessors used for and how does it change fluent-style access?

@Accessors customizes the naming and chaining style of Lombok's generated getters/setters, moving away from strict JavaBeans conventions toward a more fluent, chainable style some codebases prefer.

@Accessors(fluent = true, chain = true)
@Getter @Setter
public class Person {
    private String name;
    private int age;
}

Person p = new Person().name("Ada").age(34);   //  no "get"/"set" prefix, and setters return `this`

fluent = true drops the get/set prefixes entirely (so name() and age() serve as both getter-style and setter-style access), while chain = true makes setters return the object itself so calls can be chained. This is a stylistic choice — standard JavaBeans-style accessors remain the default and are what most frameworks (like Jackson, by default) expect, so switching to fluent accessors can require extra configuration for such tools to still work correctly.

What does @Accessors(fluent = true) change about generated getter/setter names?
What does chain = true add to generated setters?

More Related questions...

What is Lombok? What is the purpose of Lombok in Java? How do you add Lombok to a Maven project? How do you add Lombok to a Gradle project? What is @Getter used for? What is @Setter used for? What is @ToString used for? What is @EqualsAndHashCode used for? What is @NoArgsConstructor used for? What is @AllArgsConstructor used for? What is @RequiredArgsConstructor used for? What is @Data used for? What is @Value used for? What is @Builder used for? What is @Slf4j used for? What is @NonNull used for? What is @Cleanup used for? What is @SneakyThrows used for? What is @Synchronized used for? What is @With used for? Describe how Lombok works under the hood (annotation processing)? How do you install the Lombok plugin in an IDE? What are the types of Lombok annotations? How do you exclude a field from @ToString? How do you exclude a field from @EqualsAndHashCode? What is @Builder.Default used for? Why does IDE support matter for using Lombok effectively? What is the difference between @Data and @Value? What is the difference between @NoArgsConstructor, @AllArgsConstructor, and @RequiredArgsConstructor? When should you use @Builder instead of a constructor? How does @EqualsAndHashCode handle inheritance by default? Why can @Data be risky on JPA entity classes? How do you combine Lombok's @Builder with inheritance? What is the difference between @Getter(lazy = true) and a normal @Getter? Why should you be careful using @EqualsAndHashCode on Hibernate entities with lazy-loaded proxies? What is @Accessors used for and how does it change fluent-style access? How does Lombok handle @ToString with circular references? What is @FieldDefaults used for? What is @Delegate used for? Why is Lombok's approach considered a "compiler hack" and what are the implications? How do you debug generated Lombok code? What issues can Lombok cause with static code analysis tools? What are the risks of using @Data with mutable collections? How does delombok work and when would you use it? Why might Lombok cause issues in multi-module Maven builds with annotation processor ordering? What is @UtilityClass used for? What is the difference between Lombok's @Builder and the traditional Gang-of-Four Builder pattern? How do you use Lombok with Java records - is Lombok still needed?
Show more question and Answers...


Comments & Discussions