1.来源:@Builder 注解是 Lombok 提供的一种注解,用于简化构建对象的过程。通过在类上添加 @Builder 注解,可以自动生成一个建造者模式相关的代码,使得对象的构建更加简洁和易读。
比较:
传统赋值:
Person person = new Person();
person.setName("Adam Savage");
person.setCity("San Francisco");
person.setJob("Mythbusters");
使用@Builder
Person person = Person.builder()
.name("Adam Savage")
.city("San Francisco")
.job("Mythbusters")
.build();
2、辅助注解
2.1、@Builder.Default
在传统对象中,我们直接对参数赋值可以初始化参数,但是使用@Builder后,初始化参数是无效的,所以需要在需要初始化参数上边使用@Builder.Default注明这是一个默认构造参数。
@Data
@Builder
Public class Person{
@Builder.Default
Private String name=“xiaoixiao”;
Private String job=“学生”;
}
创建对象:Person p=new Person().builder().build();
结果:person(name=xiaoixiao,job=null);
2.2、@Singular
Person对象里是interests,而且类型为List<String>,但是我们赋值的参数却是interest,类型是string,两次赋值都添加到里面了。
@Data
@Builder
Public class Person{
Private String name;
@Sigular
private List<String>interests;}
创建对象:Person p=new Person().builder().name(“xiao”).interest(“吃”).interest(“喝”).build();
结果:person(name=xiao,interests=[吃,喝]);
@Singular可以识别简单的复数单词,对于以以“s”结尾的单词,要删除最后一个字母;对于某些以“es”结尾的单词,要删除最后两个字母,对于不能识别的会报错
如:
@Data
@Builder
Public class Person{
Private String name;
@Sigular
private List<String>tagList;//编译出错
}
解决方式:
@Sigular提供了别名功能,向注解添加一个值以用作单数方法名称来解决问题
@Sigular(“tag”)
private List<String>tagList;
创建对象:Person p=new Person().name(“xiao”).tag(“吃1”).tag(“喝1”).build();