Lombok注解超详细解析 您所在的位置:网站首页 excel函数大全详细注解 Lombok注解超详细解析

Lombok注解超详细解析

2024-07-11 12:22| 来源: 网络整理| 查看: 265

目录 概要一、@Getter和@Setter二、@ToString三、@EqualsAndHashCode四、@NoArgsConstructor五、@AllArgsConstructor六、@RequiredArgsConstructor七、@Data八、@Value九、@Builder十、@Slf4j总结

概要

Lombok 是一个 Java 库,用于通过注解方式自动化生成 Java 类的常用方法(如 getter、setter、toString 等),从而简化开发流程并减少重复性代码。以下是 Lombok 库中常用的注解及其作用。

一、@Getter和@Setter

为类的字段自动生成getter和setter方法。

import lombok.Getter; import lombok.Setter; public class Person { @Getter @Setter private String name; @Getter @Setter private int age; }

使用@Getter和@Setter注解后,Lombok会自动生成getName()和setName()方法以及getAge()和setAge()方法。

二、@ToString

自动生成toString()方法,方便对象的打印输出。

import lombok.ToString; @ToString public class Person { private String name; private int age; }

使用@ToString注解后,Lombok会自动生成toString()方法,以便打印对象的字段值。

三、@EqualsAndHashCode

自动生成equals()和hashCode()方法,用于对象的比较和哈希计算。

import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Person { private String name; private int age; }

使用@EqualsAndHashCode注解后,Lombok会自动生成equals()和hashCode()方法。

四、@NoArgsConstructor

生成无参构造函数。

import lombok.NoArgsConstructor; @NoArgsConstructor public class Person { private String name; private int age; }

使用@NoArgsConstructor注解后,Lombok会生成一个无参构造函数。

五、@AllArgsConstructor

自动生成包含所有非静态字段的构造函数(全参构造方法)。

import lombok.AllArgsConstructor; @AllArgsConstructor public class Person { private String name; private int age; }

使用@AllArgsConstructor注解后,Lombok会为所有非静态字段生成构造函数。

六、@RequiredArgsConstructor

自动生成必需参数的构造方法,通常用于 final 属性。

import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class User { private final String name; private int age; private final String email; }

在上述示例中,三个字段:name、age 和 email。通过在类上使用 @RequiredArgsConstructor 注解,Lombok 会自动生成一个构造方法,该构造方法只包含 name 和 email 这两个被标记为 final 的字段作为参数,age 字段不会包含在构造方法中。

七、@Data

结合了@Getter、@Setter、@EqualsAndHashCode和@ToString的功能。

import lombok.Data; @Data public class Person { private String name; private int age; }

使用@Data注解后,Lombok会自动为类生成getter、setter、equals、hashCode和toString等方法。

八、@Value

生成不可变类,类似于 @Data,但不会生成 setter 方法。不可变类指的是一旦创建对象,就不能再修改它的字段值。使用 @Value 注解可以避免意外的修改对象的状态,从而增加代码的健壮性和可维护性。

import lombok.Value; @Value public class User { private String name; private int age; }

请注意,由于 @Value 注解生成的类是不可变的,所以它不会生成 setter 方法。如果需要在对象创建后对字段进行修改,就不适合使用 @Value 注解。但对于不需要修改的数据对象,使用 @Value 可以保证对象状态的一致性,从而减少错误和代码维护难度。

九、@Builder

自动生成构建对象的 builder 模式。Builder 模式可以简化对象的创建,特别是当类的构造参数较多时。

import lombok.Builder; @Builder public class User { private String name; private int age; private String email; }

在上述示例中,我们使用了 @Builder 注解来标记 User 类,Lombok 会为 User 类生成一个内部静态类 UserBuilder,用于构建 User 对象。

使用 @Builder 生成的构建器可以按照以下方式来使用:

User user = User.builder() .name("John") .age(25) .email("[email protected]") .build();

在构建器中,可以使用链式调用来设置对象的属性,然后通过调用 build() 方法来构建最终的对象。构建器会自动为您生成合适的构造参数和方法,使得代码更具可读性和易用性。

需要注意的是,@Builder 注解可以配置一些属性,例如:

access:控制生成的构造器的可见性,默认为 PUBLIC。builderMethodName:指定构建器方法的名称,默认为 builder。buildMethodName:指定构建对象的方法名称,默认为 build。toBuilder:生成一个支持属性复制的 toBuilder() 方法。

总之,使用 @Builder 注解可以减少繁琐的构造方法,提高代码的可读性和编写效率,特别是在类的字段较多时。

十、@Slf4j

自动生成日志记录变量,通常与具体的日志库(如 Logback、Log4j2)配合使用。

import lombok.extern.slf4j.Slf4j; @Slf4j public class UserService { public void logMessage() { log.info("This is a log message."); } }

在上述示例中,我们使用了 @Slf4j 注解来标记 UserService 类。Lombok 会自动生成一个名为 log 的日志记录变量,你可以在类中使用这个变量来进行日志记录。在这里,我们使用了 log.info(“This is a log message.”) 来记录一条信息日志。

需要注意的是,使用 @Slf4j 注解前,你需要确保项目中已经配置了相应的日志框架,如 Logback、Log4j2 等。Lombok 会自动与这些日志框架集成,使得生成的日志记录变量能够正确地执行日志输出。

@Slf4j 注解可以显著减少手动创建日志记录对象的代码,提高代码的可读性和维护性。

总结

这些注解可以根据需求单独使用,也可以组合在一起使用,以简化 Java 类的开发过程,减少冗余代码,并提高代码的可读性和维护性。请注意,使用 Lombok 需要在项目中添加 Lombok 的依赖,以便编译器能够正确处理这些注解。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有