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

使用Lombok Builder模式时,如何为Boolean类型设置默认值?

问题描述

现有如下实体类:

class Student {
     private int id;
     private Boolean isPresent = Boolean.FALSE;
}

使用Lombok实现Builder模式构建对象时,若未设置isPresent字段,该字段值为null而非类中初始化的false:

Student model = Student.builder().id(10).build();
// model.isPresent 为 null 而非 false

要求:实现未设置isPresent时其值为false,禁止将Boolean替换为boolean,也禁止在Builder中直接设置该字段的值。补充说明:当前已使用Lombok的全参构造、无参构造以及getter、setter方法。

解决方案

直接在isPresent字段上添加Lombok的@Builder.Default注解,即可让Builder在未显式设置该字段时,使用类中定义的初始化值Boolean.FALSE:

import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
class Student {
     private int id;
     @Builder.Default
     private Boolean isPresent = Boolean.FALSE;
}

验证代码:

Student model = Student.builder().id(10).build();
// model.isPresent 现在为 false

原理:@Builder.Default会告知Lombok的Builder生成逻辑,当该字段未被显式赋值时,使用字段上定义的默认初始化值,而非默认的null。

内容的提问来源于stack exchange,提问作者Hargun Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 06:50:30