From 0727c8bfd305408074d908dc4f8c31c0bff54789 Mon Sep 17 00:00:00 2001
From: Roel Spilker
In practice, @Value is shorthand for: final @ToString @EqualsAndHashCode @AllArgsConstructor @FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) @Getter, except that explicitly including an implementation of any of the relevant methods simply means that part won't be generated and no warning will be emitted. For example, if you write your own toString, no error occurs, and lombok will not generate a toString. Also, any explicit constructor, no matter the arguments list, implies lombok will not generate a constructor. If you do want lombok to generate the all-args constructor, add @AllArgsConstructor to the class. You can mark any constructor or method with @lombok.experimental.Tolerate to hide them from lombok.
- It is possible to override the final-by-default and private-by-default behaviour using either an explicit access level on a field, or by using the @NonFinal or @PackagePrivate annotations.
- It is possible to override any default behaviour for any of the 'parts' that make up @Value by explicitly using that annotation.
+ It is possible to override the final-by-default and private-by-default behavior using either an explicit access level on a field, or by using the @NonFinal or @PackagePrivate annotations.
+ It is possible to override any default behavior for any of the 'parts' that make up @Value by explicitly using that annotation.
final to each field in the annotated class or enum.
- To add final to each field, use @FieldDefaults(makeFinal=true). Any non-final field which must remain nonfinal
+ To add final to each (instance) field, use @FieldDefaults(makeFinal=true). Any non-final field which must remain nonfinal
can be annotated with @NonFinal (also in the lombok.experimental package).
- To add an access modifier to each field, use @FieldDefaults(level=AccessLevel.PRIVATE). Any field that does not already have an
+ To add an access modifier to each (instance) field, use @FieldDefaults(level=AccessLevel.PRIVATE). Any field that does not already have an
access modifier (i.e. any field that looks like package private access) is changed to have the appropriate access modifier. Any package private
field which must remain package private can be annotated with @PackagePrivate (also in the lombok.experimental package).