最全的 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 并不支持