简介
1.概要
Lombok
是一个Java库,可以自动插入编辑器和构建工具- 通过注解的方式可以自动化生成
getter
、setter
等方法,使代码变的更整洁
2.使用前
-
普通项目直接下载jar包,导入项目即可
-
maven
项目中需要在pom.xml
中添加依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version> <scope>provided</scope> </dependency>
-
还需要安装对应的
lombok
插件
常用注解与示例
1.常用注解
-
@Setter/@Getter
- 注解于类或字段
- 为类或该字段生成
setter/getter
方法
-
@ToString
:注解在类,为该类添加相应的tostring
方法 -
@NonNull
- 注解在属性或者给构造器上,会生成非空声明
- 易于3校验参数,避免空指针
-
@Cleanup
:- 注解在变量前,自动关闭变量资源
- 默认是调用资源的
close()
方法,@Cleanup("xxx")
来指定要调用的方法
-
@EqualsAndHashCode
注解在类,生成hashCode
和equals
方法 -
@NoArgsConstructor
、@RequiredArgsConstructor
和@AllArgsConstructor
-
@NoArgsConstructor
注解在类,生成无参的构造方法 -
@RequiredArgsConstructor
- 注解在类,为类中需要特殊处理的字段生成构造方法
- 如果类中含有
final
修饰的成员变量,是无法使用的
-
@AllArgsConstructor
注解在类,生成包含类中所有字段的构造方法。
-
-
@Data
- 注解在类,生成
setter/getter
、equals
、canEqual
、hashCode
、toString
方法 - 如为final属性,则不会为该属性生成setter方法
- 注解在类,生成
2.示例
-
以下我们通过定义一个学生类,来做一个小例子
public class Student { private int id; private String name; private String gender; private int age; }
-
我们需要生成getter和setter方法,即使可以自动生成,但是占据的代码篇幅也较多
package org.example; import lombok.Getter; public class Student { private int id; private String name; private String gender; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setGender(String gender) { this.gender = gender; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public String getGender() { return gender; } public int getAge() { return age; } public int hashCode() { return super.hashCode(); } @Override public String toString() { return super.toString(); } }
-
通过
@Setter/@Getter
来简化臃肿的代码@Getter @Setter public class Student { private int id; private String name; private String gender; private int age; public int hashCode() { return super.hashCode(); } @Override public String toString() { return super.toString(); } }
-
同样的,也可使用
@ToString
和@EqualsAndHashCode
来生成相应方法@Getter @Setter @ToString @EqualsAndHashCode public class Student { private int id; private String name; private String gender; private int age; }
-
如果你对头上的一坨东西感觉不爽的话,可以用
@Data
来替代它们@Data public class Student { private int id; private String name; private String gender; private int age; }
3.结语
lombok
可以大大的改善臃肿的代码,使代码更加简洁- 但是也降低了代码的可读性,内容对外是封闭的
- 而且需要合作者都要配置好
lombok
才可以正常执行程序 - 使用的时候要适当,可以有更好的编码体验
- 乱用也会给自己带来很多困扰