Lombok 注解及使用大全

一、Lombok 注解大全
注解作用
@Getter类注解,代替 getter 方法。
@Setter类注解,代替 setter 方法。
@ToString类注解,生成 toString 方法。
@ToString.Exclude字段注解,排除不需要在 toString 中出现的字段。
@ToString.Include字段注解,标记需要出现在 toString 中的字段。
构造器相关注解
@NoArgsConstructor类注解,生成无参构造方法。
@AllArgsConstructor类注解,生成除static字段之外带有各参数的构造方法。
@RequiredArgsConstructor作用于类,生成包含 final 和 @NonNull 注解的成员变量的构造方法。
@EqualsAndHashCode根据类所拥有的非静态字段自动重写 equals() 方法和 hashCode() 方法。
@EqualsAndHashCode.Exclude排除字段在重写的 equals 方法和 hashCode 方法中。
@EqualsAndHashCode.Include指定字段在重写的 equals 方法和 hashCode 方法中。
@Data类注解,综合注解,包含 :@Getter, @Setter, @ToString , @RequiredArgsConstructor, @EqualsAndHashCode。
@Value类注解,综合注解,包含:@Getter, @ToString, @RequiredArgsConstructor, @EqualsAndHashCode。
@Builder生成当前类的字段构建方法。生成 builder() 方法,并且直接根据字段名称方法进行字段赋值,最后使用 build() 方法构建出一个实体对象。
@Singular作用于集合字段,需要配合 @Builder 使用。
@SuperBuilder生成父类的字段构建方法。
@Synchronized作用于方法,可以替换 synchronized 关键字或 lock 锁。
@SneakyThrows在没有 throws 关键字的情况下,隐蔽地抛出受检查异常。
@val作用于类、变量,主要用于声明变量的类型,注解将从初始化程序表达式中推断类型,生成的变量是 final 类型。
@var和 @val 一样,作用于类、变量,主要用于声明变量的类型,注解将从初始化程序表达式中推断类型,两者区别在于 var 不加 final。
@With作用于类、变量,生成构造方法以及with + 变量名的方法,返回当前对象。
@WithBy只作用于类,只生成with + 变量名的方法,返回当前对象。
@Generated用于标记类、变量、方法是自动生成的,没什么大用。
@Cleanup标记需要释放清理操作的资源对象变量,标记之后资源对象使用完毕后,就会被自动关闭和清理。
日志注解
@CommonsLogorg.apache.commons.logging.Log
@Floggercom.google.common.flogger.FluentLogger
@JBosLogorg.jboss.logging.Logger
@Logjava.util.logging.Logger
@Log4jorg.apache.log4j.Logger
@Log4j2org.apache.logging.log4j.Logger
@Slf4jorg.slf4j.Logger
@XSlf4jorg.slf4j.ext.XLogger
实验性注解
@Accessors类似于 @Builder 支持链式调用,需要配合 @Setter、@Getter 等注解使用,作用于类、变量。
@Delegate作用于容器变量,为该变量生成一堆常用的方法,这些方法都是容器中的方法。
@ExtensionMethod作用于类,向类添加方法,无需创建新的子类。
@FieldDefaults作用于类,定义变量的访问修饰符,以及是否设置为 final。
@FieldNameConstant作用于类,生成一个包含所有成员变量的内部类或者内部枚举,内部类中每个字段值即为字段名并且值不可变。
@Helper作用于方法内部类,使内部类中的方法暴露在外面可以被直接调用,不建议使用。
@NonFinal作用于类、变量,表示变量不加 final。
@PackagePrivate作用于类和变量,相当于访问修饰符的 default,没什么用。
@SuperBuilder支持对于基类成员变量赋值,算是 @Builder 的升级版。
@Tolerate实现对冲突的兼容,作用于方法上,没什么大用,可以配合 @Builder 使用。
@UtilityClass作用于类,将类标记为 final,并且类、内部类中的方法、字段都标记为 static。
@StandardException自定义异常类。
二、引入依赖
<dependency>
	<groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.20</version> <!-- Spring Boot 项目此部分可以不写 -->
</dependency>
三、Lombok 的优缺点
  • 优点:
    能通过注解的形式自动生成构造器、getter / setter、equals、hashcode、toString 等方法,提高了一定的开发效率,让代码变得简洁,不用过多的去关注相应的方法。
    属性做修改时,也简化了维护为这些属性所生成的 getter / setter 方法等。

  • 缺点:
    不支持多种参数构造器的重载。
    虽然省去了手动创建一系列方法的麻烦,但大大降低了源代码的可读性和完整性,降低了阅读源代码的舒适度。

@EqualsAndHashCode(callSuper = true/false)

首先 @EqualsAndHashCode 标在子类上。

  1. callSuper = true,根据子类自身的字段值和从父类继承的字段值 来生成hashcode,当两个子类对象比较时,只有子类对象的本身的字段值和继承父类的字段值都相同,equals方法的返回值是true。

  2. callSuper = false,根据子类自身的字段值 来生成hashcode, 当两个子类对象比较时,只有子类对象的本身的字段值相同,父类字段值可以不同,equals方法的返回值是true。

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitemeen太白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值