如何重写 lombok 构建器方法

0 java lombok

我想覆盖 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)

在此输入图像描述

use*_*er7 5

您创建的构建器名称必须与 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)