Lombok注解汇总

1,654 阅读2分钟

注解

val

使用val注解可以取代任意类型作为局部变量

var examle = new ArrayList<String>();

@NonNull

在方法上使用@NonNull注解可以做非空判断,如果传入空值的话会直接抛NullPointerException。

@Cleanup

当我们在Java中使用资源时,不可避免地需要在使用后关闭资源。使用@Cleanup注解可以自动关闭资源。

@Getter/@Setter(常用)

有了@Getter/@Setter注解,我们再也不用编写getter/setter方法了。

@ToString

使用@ToString注解可以自动生成toString方法,默认会包含所有类属性,使用@ToString.Exclude注解可以排除属性的生成。

@EqualsAndHashCode

使用@EqualsAndHashCode注解可以自动生成hashCode和equals方法,默认包含所有类属性,使用@EqualsAndHashCode.Exclude可以排除属性的生成。

@XxConstructor(常用)

使用@XxConstructor注解可以自动生成构造方法,有@NoArgsConstructor@RequiredArgsConstructor和@AllArgsConstructor三个注解可以使用。

  • @NoArgsConstructor:生成无参构造函数。
  • @RequiredArgsConstructor:生成包含必须参数的构造函数,使用@NonNull注解的类属性为必须参数
  • @AllArgsConstructor:生成包含所有参数的构造函数。

@Data

@Data是一个方便使用的组合注解,是@ToString、@EqualsAndHashCode、@Getter、@Setter和@RequiredArgsConstructor的组合体。

@Value

使用@Value注解可以把类声明为不可变的,声明后此类相当于final类,无法被继承,其属性也会变成final属性。

@Builder

使用@Builder注解可以通过建造者模式来创建对象,建造者模式加链式调用,创建对象太方便了!

@SneakyThrows

还在手动捕获并抛出异常?使用@SneakyThrows注解自动实现试试!

@Synchronized

当我们在多个线程中访问同一资源时,往往会出现线程安全问题,以前我们往往使用synchronized关键字修饰方法来实现同步访问。使用@Synchronized注解同样可以实现同步访问。

@With

使用@With注解可以实现对原对象进行克隆,并改变其一个属性,使用时需要指定全参构造方法。

@Getter(lazy=true)

当我们获取某一个属性比较消耗资源时,可以给@Getter添加lazy=true属性实现懒加载,会生成Double Check Lock 样板代码对属性进行懒加载。

@Log

使用@Log注解,可以直接生成日志对象log,通过log对象可以直接打印日志。

@Slf4j(常用)

使用Lombok生成日志对象时,根据使用日志实现的不同,有多种注解可以使用。比如@Log、@Log4j、@Log4j2、@Slf4j等。

脑图

最后说一句

如果这篇文章对您有所帮助,或者有所启发的话,帮忙关注一下,您的支持是我坚持写作最大的动力,多谢支持。

此外,关注公众号:黑色的灯塔,专注Java后端技术分享,涵盖Spring,Spring Boot,SpringCloud,Docker,Kubernetes中间件等技术。