注解类型 Builder
builder 注解为被注解的类或包含使用
@Builder 注解的成员的类创建所谓的“builder”方面。如果成员被注解,它必须是构造函数或方法。如果类被注解,则会生成一个包私有构造函数,其中所有字段都作为参数(就好像类上存在 @AllArgsConstructor(access = AccessLevel.PACKAGE) 一样),并且就好像此构造函数已使用 @Builder 注解一样。请注意,仅当您没有编写任何构造函数并且也没有添加任何显式的 @XArgsConstructor 注解时,才会生成此构造函数。在这些情况下,lombok 将假定存在一个 all-args 构造函数并生成使用它的代码;这意味着如果此构造函数不存在,您将收到编译器错误。
@Builder 的效果是生成一个名为 TBuilder 的内部类,其中包含一个私有构造函数。TBuilder 的实例是通过名为 builder() 的方法创建的,该方法也在类本身中为您生成(而不是在 builder 类中)。
TBuilder 类为注解的构造函数/方法(在注解类时为每个字段)的每个参数包含 1 个方法,该方法返回 builder 本身。builder 还有一个 build() 方法,该方法返回原始类型的已完成实例,该实例是通过将通过 builder 中的各种其他方法设置的所有参数传递给使用 @Builder 注解的构造函数或方法来创建的。此方法的返回类型将与相关类相同,除非方法已被注解,在这种情况下,它将等于该方法的返回类型。
完整文档请见 @Builder 的 project lombok 功能页面。
之前
@Builder
class Example<T> {
private T foo;
private final String bar;
}
之后 class Example<T> {
private T foo;
private final String bar;
private Example(T foo, String bar) {
this.foo = foo;
this.bar = bar;
}
public static <T> ExampleBuilder<T> builder() {
return new ExampleBuilder<T>();
}
public static class ExampleBuilder<T> {
private T foo;
private String bar;
private ExampleBuilder() {}
public ExampleBuilder foo(T foo) {
this.foo = foo;
return this;
}
public ExampleBuilder bar(String bar) {
this.bar = bar;
return this;
}
@java.lang.Override public String toString() {
return "ExampleBuilder(foo = " + foo + ", bar = " + bar + ")";
}
public Example build() {
return new Example(foo, bar);
}
}
}
- 另请参阅
-
嵌套类概要
嵌套类修饰符和类型类描述static @interface使用@Default注解的字段必须具有初始化表达式;如果未在构建期间显式设置,则该表达式将用作默认值。static @interface放在字段上(在类型上使用@Builder的情况下)或参数上(在构造函数或静态方法上使用@Builder的情况下)以指示 lombok 应如何给定实例获取此字段或参数的值;这仅在toBuilder为true时相关。 -
可选元素概要
可选元素修饰符和类型可选元素描述设置生成的 builder 类的访问级别。builder 类的名称。预先添加到生成的 builder 类中 'set' 方法的前缀。boolean如果为 true,则生成一个实例方法以获取使用此实例的值初始化的 builder。
-
元素详情
-
builderMethodName
String builderMethodName- 返回
- 创建新的 builder 实例的方法的名称。默认值:
builder。如果为空字符串,则禁止生成builder方法。
- 默认
"builder"
-
buildMethodName
-
builderClassName
String builderClassNamebuilder 类的名称。类型和构造函数上@Builder的默认值:请参阅 configkeylombok.builder.className,如果未设置,则默认为(TypeName)Builder。方法上
@Builder的默认值:请参阅 configkeylombok.builder.className,如果未设置,则默认为(ReturnTypeName)Builder。- 返回
- 将生成的 builder 类的名称(或者如果已存在,将填充 builder 元素)。
- 默认
""
-
toBuilder
boolean toBuilder如果为 true,则生成一个实例方法以获取使用此实例的值初始化的 builder。仅当@Builder用于构造函数、类型本身或返回声明类型实例的静态方法时才合法。- 返回
- 是否生成
toBuilder()方法。
- 默认
false
-
access
AccessLevel access设置生成的 builder 类的访问级别。默认情况下,生成的 builder 类是public。注意:如果您编写自己的 builder 类,这将不起作用(我们不会更改其访问级别)。- 返回
- builder 类将使用此访问修饰符生成。
- 默认
PUBLIC
-
setterPrefix
String setterPrefix预先添加到生成的 builder 类中 'set' 方法的前缀。默认情况下,生成的方法不包含前缀。例如,通常生成为someField(String someField)的方法在使用@Builder(setterPrefix = "with")时将改为生成为withSomeField(String someField)。请注意,强烈建议不要使用 "with" 作为 builder setter 方法的前缀,因为 "with" 通常表示不可变数据结构,而 builder 根据定义是可变对象。对于@Singular字段,生成的方法称为withName、withNames和clearNames,而不是默认的name、names和clearNames。- 返回
- 预先添加到生成的方法名称的前缀。
- 默认
""
-