如何使用 lombok 制作私有 builder() 方法
How to make private builder() method with lombok
我正在使用 lombok @Builder。当我在 MyExample
class 上放置 @Builder
注释时,@Builder
生成 public builder()
方法。但是我想制作 private builder()
方法。不幸的是 @Builder
注释没有 access
选项。我该怎么办?
您可以像这样使用注释:@Builder(access = AccessLevel.PRIVATE)
。
您可以覆盖生成的生成器方法,使其成为私有的。据我所知,这是唯一的方法:
@Builder
public static class Foo<F, T> {
// hide lombok's builder method:
private static FooBuilder builder() {
return new FooBuilder();
}
}
但是,这使您能够对构建器进行一些更高级的初始化。例如,您可以使用一些默认值初始化构建器,还可以使用初始 user-supplied 值启动构建器。
这是一个例子:
@Builder
public static class Car {
// kickstart builder method available to user
public static CarBuilder builder(String brand, String model) {
return builder().brand(brand).model(model);
}
// hide lombok's own builder method and apply some defaults:
private static CarBuilder builder() {
return new CarBuilder().color(System.getenv("DEFAULT_CAR_COLOR"));
}
}
我正在使用 lombok @Builder。当我在 MyExample
class 上放置 @Builder
注释时,@Builder
生成 public builder()
方法。但是我想制作 private builder()
方法。不幸的是 @Builder
注释没有 access
选项。我该怎么办?
您可以像这样使用注释:@Builder(access = AccessLevel.PRIVATE)
。
您可以覆盖生成的生成器方法,使其成为私有的。据我所知,这是唯一的方法:
@Builder
public static class Foo<F, T> {
// hide lombok's builder method:
private static FooBuilder builder() {
return new FooBuilder();
}
}
但是,这使您能够对构建器进行一些更高级的初始化。例如,您可以使用一些默认值初始化构建器,还可以使用初始 user-supplied 值启动构建器。
这是一个例子:
@Builder
public static class Car {
// kickstart builder method available to user
public static CarBuilder builder(String brand, String model) {
return builder().brand(brand).model(model);
}
// hide lombok's own builder method and apply some defaults:
private static CarBuilder builder() {
return new CarBuilder().color(System.getenv("DEFAULT_CAR_COLOR"));
}
}