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

使用Lombok Builder为BigDecimal类型字段统一设置默认值的替代方案咨询

Lombok Builder为BigDecimal类型字段统一设置默认值的替代方案咨询

嘿,我完全懂你的烦恼——当类里有10到15个BigDecimal字段,每个都要加@Builder.Default来保留BigDecimal.ZERO的默认值,确实显得代码臃肿又繁琐。这里有几个实用的替代方案,你可以根据项目情况选择:

方案一:自定义Builder初始化方法

直接在类中重写Lombok生成的builder()方法,在里面统一给所有BigDecimal字段设置默认值。用户调用builder()时,这些字段就自带默认值了,不用逐个加注解。

示例代码:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Audi extends Car {
    private String name;
    private String headquarter;
    private BigDecimal revenue;
    private BigDecimal totalAssets;

    // 自定义builder方法,统一设置BigDecimal默认值
    public static AudiBuilder builder() {
        return new AudiBuilder()
            .revenue(BigDecimal.ZERO)
            .totalAssets(BigDecimal.ZERO);
            // 后续新增BigDecimal字段,直接在这里追加即可
    }
}

这种方式的好处是集中管理所有默认值,维护起来比分散的注解更清晰,而且完全依赖Lombok本身,不需要额外工具。

方案二:利用构造函数+Builder的toBuilder特性

如果你的类已经有@AllArgsConstructor,可以通过重载构造函数给BigDecimal字段设置默认值,再结合@Builder(toBuilder = true)让Builder继承构造函数的默认逻辑。

示例代码:

@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class Audi extends Car {
    private String name;
    private String headquarter;
    private BigDecimal revenue;
    private BigDecimal totalAssets;

    // 重载构造函数,给BigDecimal字段设默认值
    public Audi(String name, String headquarter) {
        this.name = name;
        this.headquarter = headquarter;
        this.revenue = BigDecimal.ZERO;
        this.totalAssets = BigDecimal.ZERO;
    }
}

不过这种方式更适合字段组合固定的场景,如果需要灵活的Builder配置,方案一可能更合适。

方案三:全局Lombok配置(进阶)

如果项目中有很多类都需要给BigDecimal字段设默认值,可以尝试通过lombok.config文件结合自定义注解实现全局配置:

  1. 自定义一个注解(比如@BigDecimalDefaultZero)
  2. 在lombok.config中配置让Lombok识别这个注解并自动应用默认值
    这个方法需要对Lombok自定义配置有一定了解,适合大型项目统一规范的场景。

综合来看,方案一应该是最直接、最易维护的选择,尤其适合你现在字段数量多但类型统一的情况。

备注:内容来源于stack exchange,提问作者Paul Marcelin Bejan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 15:42:30