我想覆盖 Lombok 默认构建器方法。我尝试了这段代码,但它不起作用。
甚至可以做这样的事情吗?
@Data
@Builder
static class A {
private int a;
static class Builder {
A.ABuilder a(int x) {
this.a = 2 * x;
return this;
}
}
}
private static void fun() {
var a = A.builder()
.a(1)
.build();
}
Run Code Online (Sandbox Code Playgroud)
您创建的构建器名称必须与 Lombok 创建的默认名称匹配。
这会起作用,
public static class ABuilder {
ABuilder a(int x) {
this.a = 2 * x;
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
更多细节 -在 Lombok 的构建器中使用自定义设置器
由于某种原因,如果您想以不同的方式命名 Builder 类,请使用builderClassName注释Builder。
@Data
@Builder (builderClassName = "MyBuilderClass")
static class A {
private int a;
static class MyBuilderClass {
MyBuilderClass a(int x) {
this.a = 2 * x;
return this;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8971 次 |
| 最近记录: |