@Builder AST transformation is used to help write classes that can be created using fluent api calls.
The transform supports multiple building strategies to cover a range of cases and there are a number
of configuration options to customize the building process.
In addition, a number of annotation attributes let you customise the building process. Not all annotation attributes
are supported by all strategies. See the individual strategy documentation for more details.
If you're an AST hacker, you can also define your own strategy class.
The following strategies are bundled with Groovy:
SimpleStrategy for creating chained settersExternalStrategy where you annotate an explicit builder class while leaving some buildee class being built untouchedDefaultStrategy which creates a nested helper class for instance creationInitializerStrategy which creates a nested helper class for instance creation which when used with @CompileStatic allows type-safe object creationnew Person(firstName: "Robert", lastName: "Lewandowski", age: 21)or the with statement:
new Person().with {
firstName = "Robert"
lastName = "Lewandowski"
age = 21
}
so you might not find value in using the builder transform at all. But if you need Java integration or in some cases improved type safety, the @Builder transform might prove very useful.
groovy.transform.builder.SimpleStrategy , groovy.transform.builder.ExternalStrategy , groovy.transform.builder.DefaultStrategy , groovy.transform.builder.InitializerStrategy
| Modifier and Type | Method and Description |
|---|---|
| public boolean | allNames()
Whether the generated builder should support all properties, including those with names that are considered internal. |
| public boolean | allProperties()
Whether to include all properties (as per the JavaBean spec) in the generated builder. |
| public String | builderClassName()
For strategies which create a builder helper class, the class name to use for the helper class. |
| public String | builderMethodName()
The method name to use for a builder factory method in the source class for easy access of the builder helper class for strategies which create such a helper class. |
| public Class | |
| public String | buildMethodName()
For strategies which create a builder helper class that creates the instance, the method name to call to create the instance. |
| public String[] | |
| public boolean | |
| public Class | |
| public String[] | |
| public boolean | |
| public String | |
| public boolean |
| allNames | back to summary |
|---|---|
| public boolean allNames() Whether the generated builder should support all properties, including those with names that are considered internal.
| |
| allProperties | back to summary |
|---|---|
| public boolean allProperties() Whether to include all properties (as per the JavaBean spec) in the generated builder.
Groovy recognizes any field-like definitions with no explicit visibility as property definitions
and always includes them in the
| |
| builderClassName | back to summary |
|---|---|
| public String builderClassName() For strategies which create a builder helper class, the class name to use for the helper class.
Not used if using | |
| builderMethodName | back to summary |
|---|---|
| public String builderMethodName() The method name to use for a builder factory method in the source class for easy access of the
builder helper class for strategies which create such a helper class.
Must not be used if using | |
| builderStrategy | back to summary |
|---|---|
| public Class A class capturing the builder strategy | |
| buildMethodName | back to summary |
|---|---|
| public String buildMethodName() For strategies which create a builder helper class that creates the instance, the method name to call to create the instance. Default is determined by the strategy, e.g. build or create. | |
| excludes | back to summary |
|---|---|
| public String[] excludes() List of field and/or property names to exclude from generated builder methods. Must not be used if 'includes' is used. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values. | |
| force | back to summary |
|---|---|
| public boolean force() Whether to always include helper constructors. Currently only supported by InitializerStrategy.
By default, the InitializerStrategy only adds a needed helper tuple constructor if no
| |
| forClass | back to summary |
|---|---|
| public Class A class for which builder methods should be created. It will be an error to leave this attribute with its default value for some strategies. | |
| includes | back to summary |
|---|---|
| public String[] includes() List of field and/or property names to include within the generated builder methods. Must not be used if 'excludes' is used. For convenience, a String with comma separated names can be used in addition to an array (using Groovy's literal list notation) of String values. The default value is a special marker value indicating that no includes are defined; all fields are included if includes remains undefined and excludes is explicitly or implicitly an empty list. | |
| includeSuperProperties | back to summary |
|---|---|
| public boolean includeSuperProperties() Generate builder methods for properties from super classes.
| |
| prefix | back to summary |
|---|---|
| public String prefix() The prefix to use when creating the setter methods. Default is determined by the strategy which might use "" or "set" but you can choose your own, e.g. "with". If non-empty the first letter of the property will be capitalized before being appended to the prefix. | |
| useSetters | back to summary |
|---|---|
| public boolean useSetters() By default, properties are set directly using their respective field.
By setting
| |