Lombok
采取注解的形式,标记在pojo上面,在编译后,自动生成相应的方法,像get、set、构造方法等都可以注解一键生成。
引入jar包:
1 <dependency>
2 <groupId>org.projectlombok</groupId>
3 <artifactId>lombok</artifactId>
4 <version>${lombok.version}</version>
5 <scope>provided</scope>
6 </dependency>
使用方法:
1 public class GetterSetterExample {
2 @Getter @Setter private int age = 10;
3 @Setter(AccessLevel.PROTECTED) private String name;
4 @Override public String toString() {
5 return String.format("%s (age: %d)", name, age);
6 }
7 }
1 Data public class DataExample {
2 private final String name;
3 @Setter(AccessLevel.PACKAGE) private int age;
4 private double score;
5 private String[] tags;
6 @ToString(includeFieldNames=true)
7 @Data(staticConstructor="of")
8 public static class Exercise<T> {
9 private final String name;
10 private final T value;
11 }
12 }
基本注释:
1 @Getter
2 @Setter
3 @ToString
4 @EqualsAndHashCode //构造函数
5 @AllArgsConstructor //会生成一个包含所有变量,同时如果变量使用了NotNull annotation , 会进行是否为空的校验, 全部参数的构造函数的自动生成,该注解的作用域也是只有在实体类上,参数的顺序与属性定义的顺序一致。
6 @NoArgsConstructor //无参构造函数
7 @RequiredArgsConstructor //会生成一个包含常量(final),和标识了@NotNull的变量 的构造方法
集合注释:
@Data注解在类上,会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。
@NonNull 该注解用在属性或构造器上,Lombok会生成一个非空的声明,可用于校验参数,能帮助避免空指针。
@Cleanup 该注解注解在流成员变量上能帮助我们自动调用close()方法,很大的简化了代码。