Lombok 注解

Lombok是一个流行的Java库,它通过提供一系列注解简化了Java对象的创建和维护。@Getter和@Setter用于自动创建getter和setter方法,@NonNull标记不允许为null的字段,@ToString生成易读的toString方法,@EqualsAndHashCode自动生成equals和hashCode方法。@NoArgsConstructor和@AllArgsConstructor分别创建无参和全参构造器,@RequiredArgsConstructor为final或@NonNull字段创建构造器。@Log系列注解提供日志记录便捷方式,@Data、@Builder等注解进一步简化类的构建和操作。@Cleanup自动处理资源关闭,@Singular简化集合操作,@Delegate为容器变量生成方法,@Value创建不可变对象,@Accessors、@Wither和@SneakyThrows等注解提供了额外的功能支持。
注解描述
@Getter and @Setter代替 getter 和 setter 方法
@Notnull用于标记类中不能允许为 null 的字段或者参数上,任何使用该字段的地方都生成空指针判断代码,若@NonNull 标记的变量为 null,抛出 NullPointException (NPE) 异常。
@FieldNameConstants作用于类,生成一个包含所有成员变量的内部类或者内部枚举,内部类中每个字段值即为字段名,并且内部类字段值不可变
@ToString会给类自动生成易阅读的 toString 方法,带上有所非静态字段的属性名称和值,这样就十分便于我们日常开发时进行的打印操作
@EqualsAndHashCode用于根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法,方便我们用于对象间的比较
@NoArgsConstructor@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor为实体类生成除了static修饰的字段之外带有各参数的构造器方法。
@RequiredArgsConstructor为实体类生成指定字段的构造器方法,而这些字段需要被 final,或者 @NonNull修饰。
@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();
@JBosLog等价效果: private static final org.jboss.logging.Logger log = org.jboss.logging.Logger.getLogger(LogExample.class);
@Log等价效果: private static final java.util.logging.Logger log = java.util.logging.Logger.getLogger(LogExample.class.getName());
@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);
@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);
@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集
@Builder提供了一种基于建造者模式的构建对象的 API。使用 @Builder 注解为给我们的实体类自动生成 builder() 方法,并且直接根据字段名称方法进行字段赋值,最后使用 build()方法构建出一个实体对象
@SuperBuilder@Builder 不支持父类字段的生成,当一个实体类存在父类时,@Builder 只能生成当前类的字段构建方法。若需要用到父类的字段方法时, Lombok 提供了新的注解 @SuperBuilder 来应对这种情况
@Cleanup用于标记需要释放清理操作的资源对象变量,如 FileInputStream, FileOutputStream 等,标记之后资源对象使用完毕后,就会被自动关闭和清理,实际上这里 Lombok 实现效果与 Java7 特性 try with resource 一样, 为我们屏蔽了关闭资源的模板代码
@Singular
@Delegate作用于容器变量,为该变量生成一堆常用的方法,这些方法都是容器中的方法
@Value作用于类,使所有的成员变量都是 final 的,是以下注解的集合:@ToString、@EqualsAndHashCode、@Getter、@RequiredArgsConstructor;此注解和 Spring 中的 @Value 撞名,在 import 时不要弄错了
@Accessors该注解设置为chain=true,生成setter方法返回this(也就是返回的是对象),代替了默认的返回void。
@Wither@Wither是在lombok v0.11.4中作为实验性功能引入的。在lombok v1.18.10中,@Wither被改名为@With,并从实验包中移出,进入核心包。
@With克隆对象,修改一个值而保留其他值不变
@SneakyThrows主要用于在没有 throws 关键字的情况下,隐蔽地抛出受检查异常,为我们平常开发中需要异常抛出时省去的 throw 操作
@val作用于类、变量,主要用于声明变量的类型,注解将从初始化程序表达式中推断类型,生成的变量是 final 不可以变。作用于类时,需要加 @,但没什么用,作用于变量时则不需要 @ 并且只适用于局部变量
@var和@val类似,var 所声明的变量是非 final 的,val 所声明的变量是 final 的。
Lombok是一个作用于编辑器和构建工具的 Java 库,可以对编写的 Java 代码进行增强,减少重复模板的代码,其使用主要通过注解的形式实现 [^1][^4]。以下是一些常用注解介绍及使用方法: 1. **@Data**:注解在类上,提供类所有属性的 getting 和 setting 方法,此外还提供了 equals、canEqual、hashCode、toString 方法 [^1]。 2. **@Setter**:可注解在属性或类上,注解在属性上时为该属性提供 setting 方法;注解在类上时,会为类中所有属性提供 setting 方法。例如: ```java import lombok.Setter; public class PersonLombok { @Setter private String name; private boolean sex; } ``` 相当于 ```java public class Person { private String name; private boolean sex; public Person() { } public void setName(String name) { this.name = name; } } ``` [^1][^3] 3. **@Getter**:可注解在属性或类上,注解在属性上时为该属性提供 getting 方法;注解在类上时,会为类中所有属性提供 getting 方法。例如: ```java import lombok.Getter; public class PersonLombok { @Getter private String name; private boolean sex; } ``` 相当于 ```java public class Person { private String name; private boolean sex; public Person() { } public String getName() { return name; } } ``` [^1][^3] 4. **@Log4j**:注解在类上,为类提供一个属性名为 log 的 log4j 日志对象 [^1]。 5. **@NoArgsConstructor**:注解在类上,为类提供一个无参的构造方法 [^1]。 6. **@AllArgsConstructor**:注解在类上,为类提供一个全参的构造方法 [^1]。 此外,Lombok 还有其他注解,如 @Log(这是一个泛型注解,具体有很多种形式)、@EqualsAndHashCode、@NonNull、@Cleanup、@ToString、@RequiredArgsConstructor、@Value、@SneakyThrows、@Synchronized 等 [^3]。Lombok 注解在线帮助文档可参考:http://projectlombok.org/features/index ,官网介绍所有注解的页面:https://projectlombok.org/features/all [^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值