Lombok 解放双手实现自动化的类get,set和构造方法的构造。

发布时间:2024-11-18 08:22:15

Lombok (重要)

Lombok 是一个 Java 库,用于简化 Java 类中的样板代码(如 getter、setter、toString、构造器等)的生成。通过 Lombok 的注解,可以自动生成这些代码,减少冗余,提高开发效率,代码也变得更简洁清晰。

Lombok 常用注解及其功能

@Getter / @Setter:自动生成 getter 和 setter 方法。

java    @Getter    @Setter    private String name;

@ToString:生成 toString() 方法,输出对象的属性值。

java    @ToString    public class User {        private String name;        private int age;    }

@EqualsAndHashCode:生成 equals() 和 hashCode() 方法。

java    @EqualsAndHashCode    public class User {        private String name;        private int age;    }

@NoArgsConstructor / @AllArgsConstructor:生成无参构造方法和全参构造方法。

java    @NoArgsConstructor    @AllArgsConstructor    public class User {        private String name;        private int age;    }

@Data:集合了 @Getter、@Setter、@ToString、@EqualsAndHashCode、@RequiredArgsConstructor 等常用注解,简化实体类的定义。

java    @Data    public class User {        private String name;        private int age;    }

@Builder:提供一种流式的创建对象方式,通常用于对象构建。

```java    @Builder    public class User {        private String name;        private int age;    }

User user = User.builder().name("Tom").age(25).build();    ```

@Value:创建不可变对象,类自动变为 final,所有字段都 private final,生成的 getter 方法不含 setter。

java    @Value    public class User {        private String name;        private int age;    }

Lombok的使用

添加 Lombok 依赖: 如果使用 Maven 项目,在 pom.xml 中加入 Lombok 依赖: xml  <dependency>      <groupId>org.projectlombok</groupId>      <artifactId>lombok</artifactId>      <version>1.18.24</version> <!-- 请确保使用最新版本 -->      <scope>provided</scope>  </dependency> 如果使用 Gradle 项目,在 build.gradle 中加入 Lombok 依赖: groovy  compileOnly 'org.projectlombok:lombok:1.18.24'  annotationProcessor 'org.projectlombok:lombok:1.18.24' IDE 支持:Lombok 的代码是通过注解生成的,IDE 默认无法识别,所以要安装 Lombok 插件。 IntelliJ IDEA:在插件市场中搜索并安装 “Lombok” 插件,并在设置中启用注解处理(Preferences > Build, Execution, Deployment > Compiler > Annotation Processors)。 Eclipse:在 Eclipse 的插件市场中安装 “Lombok” 插件,重启 IDE。 使用 Lombok 注解:在实体类上添加合适的 Lombok 注解,例如 @Data、@Builder、@Getter、@Setter 等,根据需求简化代码。

使用 Lombok 的注意事项

IDE 插件:IDE 中必须安装 Lombok 插件,否则可能会出现编译错误。 @Data 的风险:@Data 注解虽然方便,但它会生成 equals() 和 hashCode(),这对于包含大量字段的类可能会导致性能问题。此外,如果对象中包含引用类型字段,可能会导致不正确的比较结果。 调试问题:Lombok 生成的代码在调试时不可见,可能会给新手带来困惑。为了解决这一问题,可以使用 IDE 的“Show Generated Code”功能(部分 IDE 支持)来查看。 构造器生成:@AllArgsConstructor 和 @NoArgsConstructor 无法与 @Value 同时使用,因为 @Value 会使类和字段变为 final。 兼容性:Lombok 与部分框架或工具可能存在兼容性问题,特别是一些较旧的库或构建工具。在生产环境中,需验证 Lombok 的可用性。

示例代码

package com.liuxin.pojo;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data // 生成 getter、setter、toString、equals、hashCode 等方法
@Builder // 支持链式构造对象
@NoArgsConstructor // 生成无参构造函数
@AllArgsConstructor // 生成全参构造函数
public class User {
    private Integer id;
    private String name;
    private Short age;
    private Short gender;
    private String phone;
}

上面的代码会自动生成 getter 和 setter 方法,以及 toString()、equals()、hashCode()、全参构造和无参构造函数。这样可以大幅简化代码。