Lombok 减少重复代码

Lombok

简介

该插件主要是为了减少开发人员的代码编写

下载安装

maven

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.6</version>
    <scope>provided</scope>
</dependency>

特别的:IDEA

Intellij idea开发的话需要安装Lombok plugin,同时设置 Setting -> Compiler -> Annotation Processors -> Enable annotation processing勾选。

使用常用注解

@NonNull

public NonNullExample(@NonNull Object person ) {
}

相当于如下

    if (person == null) {
           throw new NullPointerException("person");  //抛出时会附带哪个字段为 null
       }

@Cleanup

自动调用 close() 方法。

@Cleanup InputStream in = new FileInputStream(xxx);

@Getter / @Setter

    public class GetterSetterExample {
        @Getter @Setter private int id= 10;
        @Setter(AccessLevel.PROTECTED) private String name;
    }

@ToString

@ToString(exclude = {"id","name"})
public class User {
  private Integer id;
  private String name;
  private String phone;
}
//实际生成的toString()方法
public String toString(){
  return "User(phone=" + phone + ")";
}

@NoArgsConstructor @AllArgsConstructor @RequiredArgsConstructor

@NoArgsConstructor

  • 生成一个没有参数的构造函数。
  • 如果有未赋初始值的 final 字段,将导致编译器错误,可以使用 @NoArgsConstructor(force = true),该注解将初始化所有未赋初始值的 final 字段值为 0/ false/ null
  • 对于具有约束的字段(如@NonNull字段),不会生成任何检查。
  • 有些时候需要无参构造函数(如 Hibernate 、Service Provider Interface)。
  • 此注解主要与@Data 等生成带参构造函数的注解一起使用。

@AllArgsConstructor

为类中的每个字段生成一个带有1个参数的构造函数。检查标记为@NonNull的字段。

@RequiredArgsConstructor

  • 为每个需要赋值的字段生成一个带有1个参数的构造函数。
  • 所有未初始化的final字段都会获得一个参数,以及标记为 @NonNull 且未初始化的字段。
  • 对于标记为的字段@NonNull,还会生成显式非空检查。构造函数将抛出NullPointerException,效果同 @NonNull。
  • 参数的顺序与字段在代码中的声明顺序相匹配。

@EqualsAndHashCode

可以使用@EqualsAndHashCode生成equals(Object other)和hashCode()方法的实现来注释任何类定义。默认情况下,它将使用所有非静态,非瞬态字段,但您可以通过使用@EqualsAndHashCode.Include或标记类型成员来修改使用哪些字段(甚至指定要使用各种方法的输出)@EqualsAndHashCode.Exclude。或者,您可以通过标记@EqualsAndHashCode.Include和使用来准确指定您希望使用的字段或方法@EqualsAndHashCode(onlyExplicitlyIncluded = true)。


@Data

标志该类为数据类, 自动为所有字段添加@ToString, @EqualsAndHashCode, @Getter方法,为非final字段添加@Setter,和@RequiredArgsConstructor!
与 kotlin 语言中的 data 类似

@Data
public Class Person{
}

官方文档 和 参考

官方文档: https://projectlombok.org/features/index.html

文章参考
https://blog.csdn.net/qq_37192800/article/details/79785906
https://www.cnblogs.com/holten/p/5729226.html

猜你喜欢

转载自blog.csdn.net/qq_35425070/article/details/89203282