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

如何在Java Record中使用@lombok.Builder.Default注解?

在Java Record中实现@Builder.Default的等效效果

Java Record的组件不允许直接赋值初始化,因此无法直接沿用@Value类里@Builder.Default + 字段赋值的写法。不过可以通过@Builder.ObtainVia注解配合静态方法实现完全相同的默认值功能,且该注解并非仅适用于toBuilder()。

可行实现代码

@Builder
public record SomeClass(
    int id,
    String someString,
    @Builder.ObtainVia(method = "defaultSomeOtherString")
    String someOtherString
) {
    // 提供默认值的静态方法
    private static String defaultSomeOtherString() {
        return "DefaultVal";
    }
}

工作原理

Lombok生成的构建器会在build()方法中判断:如果未显式设置someOtherString参数,就会调用我们定义的静态方法获取默认值,和@Builder.Default的逻辑完全一致。

扩展说明

该方案同样兼容toBuilder():当通过toBuilder()基于已有实例创建新实例时,未显式修改的字段会保留原实例的值,若原实例使用的是默认值,也会正常继承。

内容的提问来源于stack exchange,提问作者Rik Schaaf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:55:26