Lombok

Lombok 系列问题

 

常用注解

分类
注解
作用
注意事项
构造方法相关
@NoArgsConstructor
生成无参构造方法
成员变量需为非静态,不会继承父类属性到构造器
构造方法相关
@AllArgsConstructor
生成包含所有参数的构造方法
成员变量需为非静态,不会继承父类属性到构造器;可指定构造器访问权限和静态方法名
构造方法相关
@RequiredArgsConstructor
将类中带有@NonNull注解或final修饰的成员变量生成对应的构造方法
成员变量需为非静态;若所有字段都无@NonNull注解,效果同@NoArgsConstructor
访问器方法相关
@Getter
为成员变量生成get方法
用在类上为所有非静态成员变量生成get方法;final变量只有get方法
访问器方法相关
@Setter
为成员变量生成set方法
用在类上为所有非静态成员变量生成set方法;final变量没有set方法
其他方法生成相关
@ToString
生成toString方法
生成方法时只使用类中的非静态成员变量;可通过属性控制输出
其他方法生成相关
@EqualsAndHashCode
生成equalshashCodecanEqual方法
生成方法时只使用类中的非静态成员变量
综合注解
@Data
相当于@Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor
不包括@NoArgsConstructor@AllArgsConstructor,一般需配合使用
构建对象相关
@Builder
提供一种构建值对象的方式
父类属性不能参与 builder;标注后会在类内部生成内部类用于生成值对象
访问器方法增强
@Accessors
修改默认的settergetter方法的形式
需搭配@Getter@Setter使用;有fluentchainprefix等属性
异常处理相关
@SneakyThrows
将方法中的代码用try - catch语句包裹,捕获异常并抛出
用在方法上;可指定抛出异常类型
类定义相关
@Value
@Data类似,成员变量默认定义为private final修饰,不会生成set方法
更适合只读性更强的类
资源管理相关
@Cleanup
自动释放资源
用在局部变量上;默认调用资源的close()方法,可指定其他关闭方法
参数校验相关
@NotNull
对成员方法或构造方法的参数进行非空检查
用在成员方法或构造方法的参数上;参数为空时抛出空指针异常
同步相关
@Synchronized
替换synchronized关键字或lock
用在类方法或实例方法上;锁对象与synchronized关键字不同,可指定锁对象,锁对象不存在时编译不通过
日志相关
@Log
生成java.util.logging.Logger对象
使用 JUL 日志框架;用在类上,可省去从日志工厂生成日志对象步骤
日志相关
@Log4j
生成org.apache.log4j.Logger对象
需引入log4j依赖和配置文件;用在类上,可省去从日志工厂生成日志对象步骤
日志相关
@Log4j2
生成org.apache.logging.log4j.Logger对象
需引入相关依赖和配置文件;用在类上,可省去从日志工厂生成日志对象步骤
日志相关
@Slf4j
生成org.slf4j.Logger对象
需引入相关依赖;用在类上,可省去从日志工厂生成日志对象步骤;Slf4j 是日志门面,具体实现可由其他日志框架完成
方法代理相关
@Delegate
把被注释属性类型的公有非静态方法合到当前类
被注释属性需为对象类型;只会合并公有非静态方法
集合操作相关
@Singular
配合@Builder注解,生成添加元素方法向集合添加单个元素
只能配合@Builder注解使用;作用于集合字段和参数;若未指定value属性值,集合字段名需为复数形式
Loading...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP
AI