Lombok 常用注解

Lombok 常用注解

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

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

<!-- Lombok依赖 -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
</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("文件名");
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我真真的是小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值