lombok常用注解举例归纳

340 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

学习过程中发现了一款很不错的玩意——lombok,它是一款高实用的插件(jar包,个人认为),至少在一些项目开发上简化了大部分的冗余代码,使代码看上去更加简洁

你是否有:类属性很多,getter和setter方法写一堆,看着很不舒服 的烦恼? 你是否有:每次因为忘记关闭流或一些操作而泄气纳闷? 你是否有:每次给属性赋值都要来一句对象.方法名? 你是否有:阿巴阿巴阿巴巴 ..........

lombok可以帮你解决(O(∩_∩)O哈哈~)

Lombok项目是一个Java库,它会自动插入编辑器和构建工具中,Lombok提供了一组有用的注释,用来消除Java类中的大量样板代码。仅五个字符(@Data)就可以替换数百行代码从而产生干净,简洁且易于维护的Java类。

一、lombok的jar包导入

如果你有maven项目,可以通过maven自动导入jar包来使用lombok 在这里插入图片描述

<dependency>
         <groupId>org.projectlombok</groupId>
         <artifactId>lombok</artifactId>
         <version>1.18.16</version>
</dependency>

如果你不是maven项目,需要手动去网上下载lombok的jar包 放在项目文件夹下,并将其解析为libaray的项目库里面即可使用 (和配置一般的jar包操作一样)

二、IDEA环境支持lombok

本人用的是IDEA软件,点file----setting--plugins----搜索lombok 在这里插入图片描述 然后重启IDEA就可以开始使用了

三、注解使用

准备student类,写入以下代码 在这里插入图片描述 由于我们没有为类写任何方法,所以这栏只显示了属性 在这里插入图片描述 如果我们不用lombok,而自己写方法,那么完整下的代码应该是这样子的、 在这里插入图片描述 很多很长,看到很不舒服 为了不必要的波浪线影响视觉,通过@SuppressWarnings("all"),取消掉这个类的所有警告 在这里插入图片描述

删除其他所有方法,剩下属性,我们开始使用lombok

1、 Getter和Setter注解

lombok的注解不和其他注解一致,大部分注解是在运行的时候生效,但是lombok的注解在编译过程就可以生效

getter和setter注解为我们的类一键生成了所需要的属性注入方法,注解可以放在类上,也可以放在指定的属性上

在这里插入图片描述 如果放在类上面,则自动为该类是所有属性加上getter和setter方法 如果放在某个指定属性上面,则不相同 在这里插入图片描述

2、@NoArgsConstructor和 @AllArgsConstructor注解

这两个方法是分别为该类创建一个无参构造方法和全参构造方法 在这里插入图片描述

3、@ToString注解

为该类增加一个默认重写的ToString方法 在这里插入图片描述

4、@EqualsAndHashCode注解

该注解为该类增加三个默认重写的方法,equals(),canEqual(),hashCode()方法,当使用和hash相关的数据结构的时候需要同时重写相关方法 在这里插入图片描述

5、@Data注解

@Data注解集成了上面所有注解的效果(除了全参构造方法) 在这里插入图片描述

6、@Accessors注解

这个注解使得该对象的方法支持链式使用 在这里插入图片描述 这种称为链式方法,也叫寄存器(百度翻译的) 我们打开Accessors注解的源码 在这里插入图片描述 有三个属性可以设置,一个是fluent(流),chain(链),prefix(特殊约束指定),前两个默认是false,后一个默认是空数组 下面一个一个来讲解

①当约束 fluent = true的时候,以前的getter和setter方法名称会变成和相应属性一样的名称,且每一个setter方法返回的都是这个类对象 在这里插入图片描述 然后可以做以下链接方法 在这里插入图片描述 ②当约束 chain = true的时候,以前的getter和setter方法名称不会发生相应改变,但每个setter方法的返回类型仍然变成了这个类的对象 在这里插入图片描述 ③当约束 prefix = 某个值的时候,根据驼峰命名法的规则,setter方法和getter方法会自动忽略这个前缀

比如我将类的属性名称做以下变化,加上prefix ="aa" 在这里插入图片描述

但是发现getter和setter方法名称没有发生改变,这是因为prefix 会根据驼峰命名法的规则忽略掉 "aa"的前缀 在这里插入图片描述

7、@Builder注解

builder注解是为该类增加一个工厂构造模式,当一个类增加了builder注解后会多出了 builder()方法和全参构造方法 在这里插入图片描述 可以通过以下方式创建一个类对象 在这里插入图片描述

8、@Cleanup注解

事务完成后自动帮你关闭一些连接操作(输入输出流...等等) 在这里插入图片描述

9、@Synchronized注解

为一个方法增加同步锁,当然也可以锁定指定的对象,但是如果不指定,则默认创建一个对象并锁定(用到再说)

10、@NonNull注解

修饰参数,约束该参数的值不能为null 在这里插入图片描述 常用的注解应该就这么多了!