Annotation Type ImmutablePreBuild
-
@Retention(RUNTIME) @Target(METHOD) public @interface ImmutablePreBuild
Annotation defining a method that is to be called just before a code generated immutable bean is built.This is used when an immutable bean wants to perform an action on the builder just before it is built into a bean. The action might include validation (normally done using
ImmutableValidator) and defaulting (normally done usingImmutableDefaults).The special use case for this annotation is the ability to default the value of one property from the value of another. For example, consider a bean with two dates, where one is derived from the other (such as the second being the first adjusted to a valid business day). Use of this annotation allows the second date to be set to the same as the first date if a value is not set.
The method must be a private static void instance method that takes a single argument of the type 'Builder'. The method will be called at the start of the
build()method of the builder. For example:@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.date2 == null) { builder.date2 = builder.date1; // default date2 to be same as date1 } }