You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重写Lombok默认Builder方法?代码尝试无效求解答

解决Lombok Builder方法重写不生效的问题

你的代码无法生效的核心原因是:Lombok默认生成的Builder类名为ABuilder,而你自定义的是Builder,两者不是同一个类,导致自定义方法不会被调用。以下是两种可行的实现方式:

方式一:指定Builder类名匹配自定义类

通过@Builder(builderClassName = "Builder")让Lombok生成的Builder类名与自定义类一致,Lombok会自动合并自定义方法和生成的代码:

@Data
@Builder(builderClassName = "Builder")
static class A {
    private int a;

    public static class Builder {
        public Builder a(int x) {
            this.a = 2 * x;
            return this;
        }
    }
}

private static void fun() {
    var a = A.builder()
            .a(1)
            .build();
    System.out.println(a.getA()); // 输出2,符合预期
}

方式二:直接匹配Lombok默认的Builder类名

Lombok默认生成的内部Builder类是ABuilder,直接针对这个类编写自定义方法即可,Lombok会优先使用自定义方法:

@Data
@Builder
static class A {
    private int a;

    public static class ABuilder {
        public ABuilder a(int x) {
            this.a = 2 * x;
            return this;
        }
    }
}

private static void fun() {
    var a = A.builder()
            .a(1)
            .build();
    System.out.println(a.getA()); // 输出2
}

注意事项

  • 自定义方法的访问修饰符要保持public,和Lombok生成的方法一致,否则外部无法调用。
  • 方法名必须和字段名完全匹配(这里是a),才能覆盖Lombok生成的默认赋值方法。

内容的提问来源于stack exchange,提问作者Stepan Kryzhankov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 01:55:38