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()、全参构造和无参构造函数。这样可以大幅简化代码。