Lombok 常用注解

文章目录

    • Lombok 常用注解
        • 1. @Getter 和 @Setter
        • 2. @ToString
        • 3. @EqualsAndHashCode
        • 4. @NonNull
        • 5. @NoArgsConstructor、@AllArgsConstructor 和 @RequiredArgsConstructor
        • 6. @Data
        • 7. @Builder
        • 8. @Log
        • 9. @Cleanup
        • 10. @SneakyThrows

Lombok 常用注解

Lombok 可以通过简单的注解,帮助开发人员消除 Java 中尤其是 Entity(实体)类中的冗长代码。

如果 IDEA 版本在 2020.3 以上,不需要安装 Lombok 插件;否则需要安装 Lombok 插件。


<dependency>
    <groupId>org.projectlombokgroupId>
    <artifactId>lombokartifactId>
    <version>1.18.12version>
dependency>

1. @Getter 和 @Setter

作用:为类中的属性提供 getter 和 setter 方法

位置:类上方或属性上方,在属性上方则为该属性生成 getter 和 setter 方法;在类上方则表示为该类下的所有属性生成 getter 和 setter 方法。

属性:AccessLevel,可以设置 get 和 set 方法的访问权限。AccessLevel是一个枚举类

注意:

  • static 修饰的变量不生成 getter 和 setter 方法
  • final 修饰的变量只生成 getter 方法
//给类下所有的属性添加get和set方法
@Getter
@Setter
public class User {
    @Setter(value = AccessLevel.PRIVATE) //给id属性的set方法设置为私有权限
    private Integer id;
    @Setter(value = AccessLevel.PUBLIC) //给userName属性的set方法设置为公开权限
    private String userName;
    private String password;
}

2. @ToString

作用:生成 toString 方法,默认情况下它会按照顺序打印类名称以及每个字段

位置:类上方

属性:

  • exclude :取消某一个或多个变量在 toString 方法中的显示
@Getter
@Setter
@ToString(exclude = {"password"}) //设置toString方法,该方法不会显示password的值
public class User {
    private Integer id;
    private String userName;
    private String password;
}

3. @EqualsAndHashCode

作用:生成 equals、hashCode 和 canEqual 方法。用于比较两个对象是否相同

位置:类上方

属性:

  • exclude:比较时排除一些属性
  • of:比较时只使用一些属性
@Getter
@Setter
@ToString
@EqualsAndHashCode(exclude = {"password"}) //排除password,只使用id,userName对比及计算hash
public class User {
    private Integer id;
    private String userName;
    private String password;
}

了解:判断两个对象是否相等

在 Java 中,调用 equals() 方法可以判断两个对象是否相等。如果类没有重写该方法,则判断两个引用是否指向同一个对象。

如何重写 equals():

  • 判断两个引用是否指向同一个对象
  • 判断引用是否为 Null
  • 判断两个对象的实际类型是否相等,此时需要调用 canEqual() 方法
  • 判断两个对象的属性是否相等

而在 Set 中判断对象是否重复,在调用 equals() 之前,需要先调用 hashCode() 计算 hash 值。所以判断对象相等需要重写 equals()、canEqual()、hashCode() 三个方法。

4. @NonNull

作用:用于方法参数前,表示调用该方法时参数不能为 null;用于属性上方,表示为该属性赋值时不能为 null

位置:方法参数前 或 属性上方

5. @NoArgsConstructor、@AllArgsConstructor 和 @RequiredArgsConstructor

作用:前两个注解可以生成无参构造方法全参构造方法,第三个注解可以生成带有 final 和 @NonNull 修饰的属性的构造方法

位置:类上方

注意:如果类中含有 final 修饰的成员变量,则无法使用 @NoArgsConstructor 注解

6. @Data

作用:相当于同时添加@Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor五个注解。项目中常用

位置:类上方

7. @Builder

作用:提供链式风格创建对象

位置:类上方

User user = User.builder().id(1).userName("我真真的是小白").password("123456").build();

8. @Log

作用:在类中生成日志对象,在方法中可以直接使用,可以省去从日志工厂生成日志对象这一步

位置:类上方

注意:针对不同的日志实现产品,有不同的日志注解,使用 @Log 表示使用 Java 自带的日志功能,除了 @Log ,还可以使用 @Log4j、@Log4j2、@Slf4j等注解,来使用不同的日志产品。

9. @Cleanup

作用:自动关闭资源,如 IO 流对象

位置:代码前方

public void read() throws FileNotFoundException{
    @Cleanup FileInputStream file = new FileInputStream("文件名");
    //file.close();
}

10. @SneakyThrows

作用:对方法中异常进行捕捉并抛出

位置:方法上方

@SneakyThrows
public void read(){
    @Cleanup FileInputStream file = new FileInputStream("文件名");
}

你可能感兴趣的:(Lombok,java,intellij-idea)