王小扬博客
Git
AI
产品
film
AI Code
Java
其他
计算机网络
DB
云原生
Node
Docker
操作系统
Elasticsearch
Apollo
Nestjs
Think
大前端
PHP
软件开发
设计
生活技巧
CI
缓存
Lombok
Lombok 系列问题
常用注解
分类 | 注解 | 作用 | 注意事项 |
构造方法相关 | @NoArgsConstructor | 生成无参构造方法 | 成员变量需为非静态,不会继承父类属性到构造器 |
构造方法相关 | @AllArgsConstructor | 生成包含所有参数的构造方法 | 成员变量需为非静态,不会继承父类属性到构造器;可指定构造器访问权限和静态方法名 |
构造方法相关 | @RequiredArgsConstructor | 将类中带有 @NonNull 注解或final 修饰的成员变量生成对应的构造方法 | 成员变量需为非静态;若所有字段都无 @NonNull 注解,效果同@NoArgsConstructor |
访问器方法相关 | @Getter | 为成员变量生成 get 方法 | 用在类上为所有非静态成员变量生成 get 方法;final 变量只有get 方法 |
访问器方法相关 | @Setter | 为成员变量生成 set 方法 | 用在类上为所有非静态成员变量生成 set 方法;final 变量没有set 方法 |
其他方法生成相关 | @ToString | 生成 toString 方法 | 生成方法时只使用类中的非静态成员变量;可通过属性控制输出 |
其他方法生成相关 | @EqualsAndHashCode | 生成 equals 、hashCode 和canEqual 方法 | 生成方法时只使用类中的非静态成员变量 |
综合注解 | @Data | 相当于 @Getter + @Setter + @ToString + @EqualsAndHashCode + @RequiredArgsConstructor | 不包括 @NoArgsConstructor 和@AllArgsConstructor ,一般需配合使用 |
构建对象相关 | @Builder | 提供一种构建值对象的方式 | 父类属性不能参与 builder;标注后会在类内部生成内部类用于生成值对象 |
访问器方法增强 | @Accessors | 修改默认的 setter 与getter 方法的形式 | 需搭配 @Getter 与@Setter 使用;有fluent 、chain 、prefix 等属性 |
异常处理相关 | @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...