Java / Lombok Interview questions
What is @FieldDefaults used for?
@FieldDefaults (an experimental annotation) lets you set a default access level and/or
final-ness for every field in a class in one line, rather than repeating
private final on each field individually.
@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class Point { int x; // becomes: private final int x; int y; // becomes: private final int y; }
It's a small readability/consistency tool for classes with many fields that should uniformly be private and
immutable — commonly paired with @Value, which actually applies similar defaults for you
already, so @FieldDefaults is more useful in classes using individual annotations like
@Getter rather than the all-in-one @Value/@Data bundles that already
set field visibility and finality themselves.
More Related questions...