Project Lombok:消除Boilerplate代码
Project Lombok 使用
简介:
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
lombok 是一个java的包,它自动装载到你的编辑器和构建工具里,从而增加java的功能,让您能不在写get,set,equas这些方法了,通过一个注释,类就有了一个功能齐全的生成器,自动化关闭资源,全程try catch,等等。
作用:就是消除Boilerplate代码
注解目录:
- @Getter and @Setter
- @NonNull
- @ToString
- @EqualsAndHashCode
- @Data
- @Cleanup
- @Synchronized
- @SneakyThrows
使用:
1.intellij idea中 lombok 需要插件的支持 要不会编译不通过
2.注解的作用:
[email protected] and @Setter注解位置都是可以是字段上,可以是类上
注解到类上就是类的所有变量,注解到字段是 仅字段上生成get set 方法
查看字节码文件:
[email protected] 不能为空 一旦字段设置了这个属性就不能设置空值,方法也能用此注解,一样传值也不能为空
使用地方:类 方法 参数 局部变量
例子:
[email protected] 对应生成 toString 代码
位置:类上
使用方式:
字节码文件:
[email protected] 生成hashCode 编码
有几个参数:
位置:类上
总与@Data连用 下面字节码文件
[email protected]:
位置:类上
参数:
staticConstructor 设置了后,所有构造函数都是private,但会生成sss static方法获取对象
相当于@ToString @Setter @Getter @EqualsAndHashCode(callSuper=false)的整合
会生成默认的构造参数
但如果和NonNull 连用就会生成个有参 且不能为空的参数
字节码文件:
- Cleanup @SneakyThrows 这俩放在一起说:
Cleanup是关闭流的
SneakyThrows 的是在方法报错的时候使用,利用 try catch 包裹方法的
位置:
方法与构造函数
7. @Synchronized
显然这是 对象锁
资料:
我不是很明白,锁住这个变量的结局,结果显然我认为资料也没说清楚,待续
注意问题:嵌套死循环:
图来源:https://blog.****.net/u013202238/article/details/80370868
内循环,言简意赅就是无限循环,没有出口。
例子如图片的博客已经很清楚了,注意一下hashCode 这个方法,防止多次重复利用