Lombok注解详解


注解详解

Lombok提供了很多注解用于生成Java代码,主要存放于lombok、experimental、extern包下。

lombok包下

注解汇总

注解名称作用
Getter注解在类上或属性上,为类的所有属性或单个属性自动生成getter方法
Setter注解在类上或属性上,为类的所有属性或单个属性自动生成setter方法
ToString注解在类上,自动生成类的toString方法
EqualsAndHashCode注解在类上,自动生成类的equals和hashCode方法
Data注解在类上,自动生成getter、setter、toString、equals和hashCode方法
Value注解在类上,创建不可变类,属性定义为不可变,自动生成getter、toString、equals和hashCode方法
NonNull注解在方法、属性、参数等上,标记字段为非空,如果为空则抛出异常
NoArgsConstructor生成无参构造函数
AllArgsConstructor生成包含所有参数的构造函数
RequiredArgsConstructor注解在类上,生成包含所有必需参数的构造函数(如:final修饰的参数、@NonNull注解的属性)
Builder注解在类上,被注解的类加上构造者模式(链式赋值),可使用建造者模式创建对象
Synchronized注解在方法上,为方法添加同步锁
Cleanup注解在实例化的“流”对象前,使用完后自动关闭流
Singular注解在属性上,为集合字段生成单个元素方法,需要配合 @Builder 使用
Generated标记生成的代码
SneakyThrows自动捕获可能抛出的已检查异常,并重新抛出,不会再发生已检查异常未捕获或抛出时,代码报红的情况。
val声明不可变变量,使用推断类型
var声明变量,使用推断类型

- Getter

在这里插入图片描述

在这里插入图片描述

- Setter

在这里插入图片描述

在这里插入图片描述

- ToString

在这里插入图片描述

- EqualsAndHashCode

在这里插入图片描述

- Data

在这里插入图片描述

- Value

@Value 注解和 @Data 类似,区别在于它会把类和所有成员变量默认定义为 private final 修饰,自动生成getter、toString、equals和hashCode方法,但并不生成setter方法。
在这里插入图片描述

- NonNull

在这里插入图片描述

- NoArgsConstructor

在这里插入图片描述

- AllArgsConstructor

在这里插入图片描述

- RequiredArgsConstructor

在这里插入图片描述

- Builder

在这里插入图片描述

- Synchronized

在这里插入图片描述

- Cleanup

在这里插入图片描述

- Singular

在这里插入图片描述

- Generated

- SneakyThrows

已检查异常未捕获或抛出时,代码报红:
在这里插入图片描述

使用SneakyThrows:
在这里插入图片描述

- val

在这里插入图片描述

在这里插入图片描述

- var

在这里插入图片描述

experimental包下

注解汇总

注解名称作用
Accessors配置生成的 getter 和 setter 方法的命名策略。通过设置不同的参数,可以控制生成的方法是否使用链式调用(chain)、是否使用流式调用(fluent)等
Delegate可以对任何字段或无参数方法进行注释,生成委托方法,允许将一个对象的方法委托给另一个对象。通常用于将某个对象的复杂操作委托给其他类,以保持类的简洁性和可维护性。
SuperBuilder在生成的 Builder 模式中包含父类属性。通常用于子类继承父类,并希望在子类中生成 Builder 模式时包含父类的属性。
PackagePrivate自动生成包私有访问级别的方法或字段。这样的方法或字段只能被同一包中的其他类访问,不对外暴露,提高了类的封装性。
Helper将一个类标记为辅助类,用于帮助生成其他类。通常用于为特定功能提供支持的类,但不是该功能的主要实现类。
ExtensionMethod向现有类添加额外的方法。允许在不修改原始类的情况下,为该类添加新的方法,以实现功能扩展。
UtilityClass将一个类标记为实用工具类,自动添加私有构造函数和静态方法。通常用于包含一组静态方法,这些方法与类的实例状态无关,只是一组通用的功能方法。
Wither生成带有某个字段修改器的方法,用于生成新的对象。通常用于不可变对象中,用于创建新的对象并修改其中一个字段的值,而不改变原始对象。
Tolerate允许 Lombok 忽略特定的警告。在某些情况下,Lombok 自动生成的代码可能会引发 IDE 或编译器的警告,可以使用该注解来抑制这些警告。
FieldDefaults为字段添加默认修饰符,如 private、protected 等。通过设置不同的参数,可以为字段设置默认的修饰符和默认值,提高了代码的可读性和可维护性。
NonFinal标记一个字段,使其不会生成 final 修饰符。通常用于标记类中的字段,以防止 Lombok 自动生成的代码为字段添加 final 修饰符,从而允许字段的值在对象创建后进行修改。
FieldNameConstants自动生成字段名的常量。通过该注解,可以在一个接口中定义所有字段的名称常量,避免在代码中直接使用字符串,提高了代码的可维护性和可读性。

- Accessors

- Delegate

- SuperBuilder

- PackagePrivate

- Helper

- ExtensionMethod

- UtilityClass

- Wither

- Tolerate

- FieldDefaults

- NonFinal

- FieldNameConstants

extern包下

extern包中,主要是针对日志,会自动生成日志对象,然后可以直接使用log对象打印日志。

注解汇总

注解名称作用
CommonsLogprivate static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class)
Floggerprivate static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass()
Logprivate static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName())
JBossLogprivate static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class)
Log4jprivate static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class)
Log4j2private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class)
Slf4jprivate static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class)
XSlf4jprivate static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class)

- CommonsLog

- Flogger

- Log

- JBossLog

- Log4j

- Log4j2

- Slf4j

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值