lombok 实验性注解之 @SuperBuilder

最全的 lombok 注解详情(随着版本不定时更新)

一、注解介绍

@Builder 并不支持对基类成员属性的构造,而 @SuperBuilder 就是为了解决这个问题而产生的,算是 @Builder 的升级版

二、属性介绍

  • builderMethodName:创建内部静态类的方法名,默认值为 builder
  • buildMethodName:创建实体类的方法名,默认值为 build
  • toBuilder:设置为 true 可以对这个对象进行拷贝生成新的对象,可以再修改,默认为 false
  • setterPrefix:setter 方法的前缀

三、实战演练

@Builder

public class 许潇晗 {
    private Integer age;
    
    private String name;
}

@Builder
public class 陈瑶 extends 许潇晗 {
	public static void main(String[] args) {
		陈瑶.builder().name("陈瑶").build(); // 这个时候是不能对基类的 name 属性赋值
	}
}

@SuperBuilder

@SuperBuilder(builderMethodName = "builder", buildMethodName = "build", toBuilder = true, setterPrefix = "k")
public class 许潇晗 {
    private Integer age;
    private String name;
}

@SuperBuilder
public class 陈瑶 extends 许潇晗 {
	public static void main(String[] args) {
		陈瑶.builder().kName("陈瑶").build();
	}
}

四、温馨提示

一、基类和派生类不能同时存在 @Builder
二、如果基类使用了 @SuperBuilder,那么派生类必须存在 @SuperBuilder 或者写出参数为:基类Builder<?, ?> 的构造方法
三、@SuperBuilder 并不像 @Builder 功能那么多,比如非 final 字段设置默认值,@SuperBuilder 并不支持

上一篇:springboot整合prometheus+grafana实现监控和报警


下一篇:lombok 实验性注解之 @Tolerate