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...