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() + ")"; } }
更多的详细的信息可以查看官网介绍
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于