如何使用Lombok的@Builder注解实现Builder构造器仅包含指定必填属性
实现方案
完全可以实现,最简便的方式是将@Builder注解标注在仅包含必填属性的自定义构造器上,Lombok会自动基于该构造器的参数生成Builder的入参,剩余类属性会自动生成对应的链式setter方法,刚好匹配你们团队的约定。
具体实现示例
要实现你给出的调用效果:
Person person = Person.Builder("Bob Belcher").age(23).build();
对应类的代码写法如下:
import lombok.Builder; import lombok.NonNull; public class Person { // 必填属性 private String name; // 可选属性 private Integer age; // 仅包含必填属性的私有构造器,@Builder加在此处 @Builder(builderMethodName = "Builder") private Person(@NonNull String name) { this.name = name; } }
说明
- 构造器的参数就是你要的Builder构造方法必填入参,有多少个必填属性就加多少个参数即可
- 构造器参数上加
@NonNull注解的话,Lombok会自动生成非空校验逻辑,避免传入null值 - 没有出现在构造器参数里的类属性,都会自动生成对应的链式set方法,作为可选配置项
- 示例中
builderMethodName = "Builder"是为了匹配你示例里的静态方法名,如果你们用默认的builder()命名,去掉这个参数即可
内容的提问来源于stack exchange,提问作者Sean256
相关产品推荐
相关产品推荐

