Lombok-很强大的POJO注解器 亦凉 2022-06-08 09:42 112阅读 0赞 [https://projectlombok.org/features/all][https_projectlombok.org_features_all] 官网文档,只有几个注解,但是功能很是强大。 1. 在idea中使用Lombok,可以使用插件,在插件处输入Lombok就可以安装了,比较简单。 2. 一般是使用Maven导入lombok.jar <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> <scope>provided</scope> </dependency> 3. @Getter/@Setter 使用在类和属性上,用在类上时,会对所有的非静态(non-static)属性生成相应的Getter/Setter方法。注解在属性上时,对该属性生成Getter/Setter方法。可以指定Getter/Setter方法的访问级别。 4. @EqualsAndHashCode 默认情况下,对所有非瞬态(non-transient)和非静态(non-static)字段生成equals和hashCode方法,也可以指定具体使用哪些属性 5. @ToString 生成toString方法,默认情况下,会输出类名、所有属性,属性按照顺序输出,以逗号分割。 6. @NoArgsConstructor,@RequiredArgsConstructor and @AllArgsContructor 无参构造器、部分参数构造器、全参构造器。当我们需要重载多个构造器的时候,Lombok就没办法了,这个时候我们就只能自己重载这些构造器。 7. @Data @ToString,@EqualsAndHashCode,所有属性的@Getter,所有non-final属性的@Setter和@RequiredArgsConstructor的组合。通常情况,使用这个注解就OK了 8. @Accessors(chain = true) 使用链式结构 没有使用注解的代码: public class Student { private String name; private int age; public String getName() { return name; } public Student setName(String name) { this.name = name; return this; } public int getAge() { return age; } public Student setAge(int age) { return this; } } 使用注解的代码: @Accessors(chain = true) @Data @NoArgsConstructor(staticName = "of") public class Student { private String name; private int age; } 调用: Student student = Student.of().setName("wsk").setAge(12); 9. @RequiredArgsConstructor和@NonNull: 静态构造方法和必传参数的构造方法, @Accessors(chain = true) @Setter @Getter @RequiredArgsConstructor(staticName = "ofName")//staticName中可以任意编写 public class Student { @NonNull private String name;//该元素在构造函数中必须输入 private int age; } 测试代码: Student student = Student.ofName("WSK"); 10. @Builder 使用builder,构建 建造者模式 public class Student { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public static Builder builder(){ return new Builder(); } public static class Builder{ private String name; private int age; public Builder name(String name){ this.name = name; return this; } public Builder age(int age){ this.age = age; return this; } public Student build(){ Student student = new Student(); student.setAge(age); student.setName(name); return student; } } } 调用方式: Student student = Student.builder().name("zs").age(24).build(); 使用@Builder @Builder public class Student { private String name; private int age; } 调用方式同上。 11. 以下为不常用的 12. @Value Immutable classes made very easy. 13. @SneakyThrows To boldly throw checked exceptions where no one has thrown them before! 14. @Synchronized synchronized done right: Don't expose your locks. 15. @Getter(lazy = true) 懒加载 16. @Log Captain's Log, stardate 24435.7: "What was that line again?" [https_projectlombok.org_features_all]: https://projectlombok.org/features/all
还没有评论,来说两句吧...