文章目录
- 注解详解
- lombok包下
- 注解汇总
- - Getter
- - Setter
- - ToString
- - EqualsAndHashCode
- - Data
- - Value
- - NonNull
- - NoArgsConstructor
- - AllArgsConstructor
- - RequiredArgsConstructor
- - Builder
- - Synchronized
- - Cleanup
- - Singular
- - Generated
- - SneakyThrows
- - val
- - var
 
- experimental包下
- 注解汇总
- - Accessors
- - Delegate
- - SuperBuilder
- - PackagePrivate
- - Helper
- - ExtensionMethod
- - UtilityClass
- - Wither
- - Tolerate
- - FieldDefaults
- - NonFinal
- - FieldNameConstants
 
- extern包下
- 注解汇总
- - CommonsLog
- - Flogger
- - Log
- - JBossLog
- - Log4j
- - Log4j2
- - Slf4j
 
 
注解详解
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对象打印日志。
注解汇总
| 注解名称 | 作用 | 
|---|---|
| CommonsLog | private static final org.apache.commons.logging.Log log = org.apache.commons.logging.LogFactory.getLog(LogExample.class) | 
| Flogger | private static final com.google.common.flogger.FluentLogger log = com.google.common.flogger.FluentLogger.forEnclosingClass() | 
| Log | private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName()) | 
| JBossLog | private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class) | 
| Log4j | private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LogExample.class) | 
| Log4j2 | private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger(LogExample.class) | 
| Slf4j | private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class) | 
| XSlf4j | private static final org.slf4j.ext.XLogger log = org.slf4j.ext.XLoggerFactory.getXLogger(LogExample.class) | 

![[JNI]使用jni实现简单的Java调用本地C语言代码](https://img-blog.csdnimg.cn/direct/b1a2c2ef448c44a5951dadc5696a33ed.png#pic_center)

















