Annotation Type SuperBuilder


@Target(TYPE)
@Retention(SOURCE)
public @interface SuperBuilder
The SuperBuilder annotation creates a so-called 'builder' aspect to the class that is annotated with @SuperBuilder, but which works well when extending. It is similar to @Builder, except it is only legal on types, is less configurable, but allows you to extends other builder-able classes.

All classes in the hierarchy must be annotated with @SuperBuilder.

Lombok generates 2 inner 'builder' classes, which extend the parent class' builder class (unless your class doesn't have an extends clause). Lombok also generates a static method named builder(), and a protected constructor that takes 1 argument of the builderclass type.

The TBuilder class contains 1 method for each parameter of the annotated constructor / method (each field, when annotating a class), which returns the builder itself. The builder also has a build() method which returns a completed instance of the original type.

Complete documentation is found at the project lombok features page for @SuperBuilder.

See Also:
Singular
  • Optional Element Summary

    Optional Elements 
    Modifier and Type Optional Element Description
    java.lang.String builderMethodName  
    java.lang.String buildMethodName  
    boolean toBuilder
    If true, generate an instance method to obtain a builder that is initialized with the values of this instance.
  • Element Details

    • builderMethodName

      java.lang.String builderMethodName
      Returns:
      Name of the method that creates a new builder instance. Default: builder. If the empty string, suppress generating the builder method.
      Default:
      "builder"
    • buildMethodName

      java.lang.String buildMethodName
      Returns:
      Name of the method in the builder class that creates an instance of your @Builder-annotated class.
      Default:
      "build"
    • toBuilder

      boolean toBuilder
      If true, generate an instance method to obtain a builder that is initialized with the values of this instance. In this case, all superclasses must also have toBuilder=true.
      Returns:
      Whether to generate a toBuilder() method.
      Default:
      false