1、基本介绍
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
以上为官网介绍,简而言之,Lombok 通过注解的方式,简化代码,进行快速开发,通过注解帮你在编译的时候生成相应的代码!如 getter 等方法!
2、插件安装
在 IDEA 的插件中心搜索 lombok,点击安装,完成后,重启即可!
3、简单使用
1、开启 Annocation Processors
如上图所示,开启 IDEA 的 Annocation Processors。
2、添加依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
在 maven 的 pom.xml 文件中添加上面的依赖,便可以使用
4、相关注解简单介绍
-
@Setter/@Setter :注解在属性上;为属性提供 setter/getter 方法
-
@ToString:为类生成 tostring 方法,输出类名和所有属性
-
@EqualsAndHashCode:生成 equal 和 hashCode 方法,可以通过参数,排除一些属性
-
@NoArgsConstructor :注解在类上;为类提供一个无参的构造方法
-
@RequiredArgsConstructor:会生成一个包含常量(final 修饰),和标识了 NotNull 的变量的构造方
法 。 -
@AllArgsConstructor :注解在类上;为类提供一个全参的构造方法
-
@Data ;注解在类上相当于 @Getter、@Setter、@ToString 等几个注解的合集。
-
@Log4j :注解在类上,为类提供一个属性名为 log 的 log4j 日志对象
-
@Cleanup:帮助关闭资源
-
@Synchronized :方法级别,添加同步锁
-
@SneakyThrows : 等同于 try/catch 捕获异常
-
@NonNull : 非 null 注解,参数为 null 会抛出空指针异常
-
@Value : @Data 类似,区别在于它会把所有成员变量默认定义为 private final 修饰,并且不会生成 set 方法
-
@Accessors 注解:类级别,控制各种方法操作。
- fluent: boolean 值,默认为 false。此字段主要为控制生成的 getter 和 setter 方法前面是否带
get/set;false 带,true 不带。 - chain :boolean 值,默认 false。如果设置为 true,setter 返回的是此对象,可以链式调用方法。
- prefix :设置前缀 例如:@Accessors(prefix = "abc") private String abcAge 当生成 get/set 方法
时,会把此前缀去掉
- fluent: boolean 值,默认为 false。此字段主要为控制生成的 getter 和 setter 方法前面是否带
以下是编译前的代码
import lombok.Data;
import lombok.experimental.Accessors;
/**
* @author Mckay
* @create 2019-12-14
* @description lombok简单示例,编译前
**/
@Data
@Accessors(chain = true)
public class Student {
private String name;
private int age;
private String gender;
public static void main(String[] args) {
Student student = new Student();
student.setName("小明").setAge(24).setGender("男");
System.out.println(student);
}
}
以下是编译后的代码
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
// lombok简单示例,编译后
public class Student {
private String name;
private int age;
private String gender;
public static void main(String[] args) {
Student student = new Student();
student.setName("小明").setAge(24).setGender("男");
System.out.println(student);
}
public Student() {
}
public String getName() {
return this.name;
}
public int getAge() {
return this.age;
}
public String getGender() {
return this.gender;
}
public Student setName(String name) {
this.name = name;
return this;
}
public Student setAge(int age) {
this.age = age;
return this;
}
public Student setGender(String gender) {
this.gender = gender;
return this;
}
public boolean equals(Object o) {
if (o == this) {
return true;
} else if (!(o instanceof Student)) {
return false;
} else {
Student other = (Student)o;
if (!other.canEqual(this)) {
return false;
} else {
label39: {
Object this$name = this.getName();
Object other$name = other.getName();
if (this$name == null) {
if (other$name == null) {
break label39;
}
} else if (this$name.equals(other$name)) {
break label39;
}
return false;
}
if (this.getAge() != other.getAge()) {
return false;
} else {
Object this$gender = this.getGender();
Object other$gender = other.getGender();
if (this$gender == null) {
if (other$gender != null) {
return false;
}
} else if (!this$gender.equals(other$gender)) {
return false;
}
return true;
}
}
}
}
protected boolean canEqual(Object other) {
return other instanceof Student;
}
public int hashCode() {
int PRIME = true;
int result = 1;
Object $name = this.getName();
int result = result * 59 + ($name == null ? 43 : $name.hashCode());
result = result * 59 + this.getAge();
Object $gender = this.getGender();
result = result * 59 + ($gender == null ? 43 : $gender.hashCode());
return result;
}
public String toString() {
return "Student(name=" + this.getName() + ", age=" + this.getAge() + ", gender=" + this.getGender() + ")";
}
}
更多的详细的信息可以查看官网介绍
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于