红豆的诗
lombok如何给对象属性默认值_Lombok,嗯,真⾹⾹⾹⾹⾹
⾹!
Lombok到底是什么?
先看⼀下它的官⽹
英语懒得看?没关系。
Java库),项⽬⾥⼀旦引⼊了Lombok神器之后,你项⽬中所有诸如:对象的构它⼤致意思是:
插件(本质是个Java库
它⼤致意思是:Lombok是⼀个很⽜批的插件
造函数、 equals()⽅法,属性的 get()/t()⽅法等等,这些没有技术含量的代码统统都不⽤写了,Lombok帮你搞定⼀切,全部帮你⾃动⽣成!
听起来好像是挺不错...
眼见为虚,代码为实,本⽂亲⾃尝试⼀下!
眼见为虚,代码为实
项⽬中引⼊Lombok
⾸先在项⽬的 l中引⼊ Lombok依赖:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
除此之外,还要在IDE中安装Lombok插件,并配置:
接下来进⾏代码实验。
爽!get/t不⽤写了
以前我们写⼀个 POJO对象时,⽐如定义⼀个课程 Cour,需要⾃⼰⼿动写上每个字段的 get()和 t()⽅法,就像这样:public class Cour {
含苞欲放造句private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
// ⾃⼰⼿写下⾯的 get/t ⽅法!
public Long getId() {
return id;
}
public void tId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void tName(String name) {
this.name = name;
}
public Integer getScore() {
return score;
}
public void tScore(Integer score) {
this.score = score;
}
}
但是借助于Lombok,⼀切都变得优雅起来,代码篇幅省了⼀半
public class Cour {
@Getter
@Setter
private Long id; // 课程ID
@Getter
@Setter
private String name; // 课程名称
@Getter
@Setter
private Integer score; // 课程成绩
}
两个注解:@Getter和 @Setter即可⽅便搞定。
爽!new对象变得优雅了
城南旧事好句在没有⽤Lombok之前,我们假如想new⼀个对象,我们往往会这么做(以上⾯的 Cour类为例):
Cour cour = new Cour(); // ⾸先new⼀个对象
// 然后逐步去装填对象的各个字段
cour.tId( 123l );
cour.tName( "⾼等数学" );
经济与社会cour.tScore( 100 );
引进Lombok之后,我们只需要在 Cour类上⽤上 @Builder注解:
@Builder
public class Cour {
private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
}
链式表达 的⽅式⼀⾏代码
⼀⾏代码完成:
则 Cour类对象的创建即可使⽤ 链式表达
// 对象可以链式构造,⼀句话完成!
Cour cour = Cour.builder().id(123l).name("⾼等数学").score(100).build();
“建造者模式” 的话,⼀定能猜到 @Builder注解就是⼀个典型的“建造者模式”的实现案例!
设计模式中的 “建造者模式”
看到这⾥,如果你学过设计模式
建造者模式的链式调⽤⽤起来实在是很爽!
爽!构造函数不⽤写了
⼀、全参构造器不⽤写了
当你在你的类上使⽤了Lombok的注解 AllArgsConstructor时:
@AllArgsConstructor
军理论文public class Cour {
private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
}
这时候你的类在编译后会⾃动⽣成⼀个⽆参构造函数,就像这样:
public class Cour {
private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
// Lombok⾃动会帮你⽣成⼀个全参构造器!!
public Cour( Long id, String name, Integer score ) {
this.id = id;
this.name = name;
this.score = score;
}
}
⼆、⽆参数构造器也不⽤写了
当你在你的类上使⽤了Lombok的注解 NoArgsConstructor时:
@NoArgsConstructoNoArgsConstructo@r
public class Cour {
private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
}
这时候你的类在编译后会⾃动⽣成⼀个⽆参构造函数,就像这样:public class Cour {
private Long id; // 课程ID
private String name; // 课程名称
private Integer score; // 课程成绩
// Lombok⾃动会帮你⽣成⼀个⽆参构造器!!
public Cour() {
}
}
三、部分参数构造器也不⽤写了
当你在你的类上使⽤了Lombok的注解 RequiredArgsConstructor时:
@RequiredArgsConstructor
public class Cour {
private Long id; // 课程ID
private final String name; // 课程名称
private Integer score; // 课程成绩
}
这时候你的类在编译后会⾃动⽣成⼀个具备部分参数的构造函数,就像这样:
public class Cour {
private Long id; // 课程ID
private final String name; // 课程名称
private Integer score; // 课程成绩
// 因为name字段定义成final,所以Lombok⾃动会帮你⽣成⼀个部分参数的构造器!!
public Cour(String name) {
常用偏旁名称表this.name = name;
}
}
因为 name字段定义成 final,所以 Lombok⾃动会帮你⽣成⼀个部分参数的构造器!!
爽!null判空不⽤写了
Lombok的 @NonNull注解可以⾃动帮我们避免空指针判断
避免空指针判断。该注解作⽤在⽅法参数上,⽤于⾃动⽣成空值参数检查,⽐如:
public static void output( String input ) {
// 作为⼀个严谨且良⼼的Java开发⼯程师连锁店怎么加盟
// ⼀般我们要⼿动对⼊参进⾏校验,就像下⾯这样!
if( input == null ) {
System.out.println("该函数输⼊参数为空");
}
System.out.println( input );
}
但是有了Lombok之后,事情就变得简单了,⼀个注解搞定:
小故事大智慧
public static void output( @NonNull String input ) {
// 原先这⾥对 input 的判空不⽤⼿动做了
System.out.println( input );
}
爽!屁股不⽤擦了
什么意思呢?
假如我们要读取⼀个 txt⽂本⽂件,⼀般会这样写代码: