使用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
相关产品推荐
相关产品推荐

