lombok一些注解的含义
前言
lombok一些注解的含义整理
1、@Accessors(chain = true)
链式风格,在调用set方法时,返回这个类的实例对象,比如:a.b.c
2、@Data
在JavaBean或类JavaBean中使用,这个注解包含范围最广,它包含getter、setter、NoArgsConstructor、equals、canEqual、hashCode、toString 注解,即当使用当前注解时,会自动生成包含的所有方法;
3、@getter
在JavaBean或类JavaBean中使用,使用此注解会生成对应的getter方法;
4、@setter
在JavaBean或类JavaBean中使用,使用此注解会生成对应的setter方法;
5、@NoArgsConstructor
在JavaBean或类JavaBean中使用,使用此注解会生成对应的无参构造方法;
6、@AllArgsConstructor
在JavaBean或类JavaBean中使用,使用此注解会生成对应的有参构造方法;
7、@RequiredArgsConstructor
@NoArgsConstructor 注解是针对标有 @NonNull 注解的变量和 final 变量进行参数的构造方法。
8、@ToString
在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的toStirng方法;
9、@EqualsAndHashCode
在JavaBean或类JavaBean中使用,使用此注解会自动重写对应的equals方法和hashCode方法;
10、@Slf4j
在需要打印日志的类中使用,当项目中使用了slf4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
11、@Log4j
在需要打印日志的类中使用,当项目中使用了log4j打印日志框架时使用该注解,会简化日志的打印流程,只需调用info方法即可;
12、@Value
用在类上,是@Data的不可变形式,相当于为属性添加final声明,只提供getter方法,而不提供setter方法
13、@Builder
用在类、构造器、方法上,为你提供复杂的builder APIs,让你可以像如下方式一样调用Person.builder().name(“Adam Savage”).city(“San Francisco”).job(“Mythbusters”).job(“Unchained Reaction”).build(); 更多说明参考Builder
14、@SneakyThrows
自动抛受检异常,而无需显式在方法上使用throws语句
15、@Synchronized
用在方法上,将方法声明为同步的,并自动加锁,而锁对象是一个私有的属性$lock或$LOCK,而java中的synchronized关键字锁对象是this,锁在this或者自己的类对象上存在副作用,就是你不能阻止非受控代码去锁this或者类对象,这可能会导致竞争条件或者其它线程错误
16、@val
用在局部变量前面,相当于将变量声明为final
17、@NonNull
给方法参数增加这个注解会自动在方法内对该参数进行是否为空的校验,如果为空,则抛出NPE(NullPointerException)
18、@Cleanup
自动管理资源,用在局部变量之前,在当前变量范围内即将执行完毕退出之前会自动清理资源,自动生成try-finally这样的代码来关闭流
19、@Log
根据不同的注解生成不同类型的log对象,但是实例名称都是log,有六种可选实现类
|
|
20、额外用法
在使用以上注解需要处理参数时,处理方法如下(以@ToString注解为例,其他注解同@ToString注解):
@Getter(lazy=true)
可以替代经典的Double Check Lock样板代码
@ToString(exclude=“column”)
意义:排除column列所对应的元素,即在生成toString方法时不包含column参数;
@ToString(exclude={“column1”,“column2”})
意义:排除多个column列所对应的元素,其中间用英文状态下的逗号进行分割,即在生成toString方法时不包含多个column参数;
@ToString(of=“column”)
意义:只生成包含column列所对应的元素的参数的toString方法,即在生成toString方法时只包含column参数;
@ToString(of={“column1”,“column2”})
意义:只生成包含多个column列所对应的元素的参数的toString方法,其中间用英文状态下的逗号进行分割,即在生成toString方法时只包含多个column参数;
@ToString(callSuper=true, includeFieldNames=true)
意义:调用父类的toString方法,包含所有属性
@RequiredArgsContructor(staticName = “of”)
生成一个静态方法,用于构建本类对象,与@NonNull联用,指定那些属性是本方法参数
21、参考和引用
lombok1: https://www.cnblogs.com/pascall/p/10281169.html lombok2: https://www.cnblogs.com/mayhh/p/10113169.html
- 原文作者:Anttu
- 原文链接:https://anTtutu.github.io/post/2021-11-19-lombok/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。