lombok常用注解举例归纳(java不用会后悔的)

学习过程中发现了一款很不错的玩意——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就可以开始使用了

3、准备一个student类

准备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
在这里插入图片描述
常用的注解应该就这么多了!

猜你喜欢

转载自blog.csdn.net/YSJ367635984/article/details/113421206