Lombok 是一个 Java 库,它通过注解来自动生成 Java 类的常用方法,例如 equals、hashCode、toString 等,从而减少了代码的重复编写。通过使用 Lombok,你可以使你的代码更加简洁和易读。下面是一个使用 Lombok 生成 equals 方法的示例,我会解释相关的详细内容:
首先,确保你的项目中包含了 Lombok 库的依赖。你可以在 Maven 或 Gradle 中添加以下依赖:
Maven:
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.22</version> <!-- 请根据实际版本号更新 -->
    <scope>provided</scope>
</dependency>
Gradle:
compileOnly 'org.projectlombok:lombok:1.18.22' // 请根据实际版本号更新
annotationProcessor 'org.projectlombok:lombok:1.18.22' // 请根据实际版本号更新
接下来,创建一个 Java 类并使用 Lombok 的注解来生成 equals 方法。这里我们将创建一个 Person 类作为示例:
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class Person {
    private String firstName;
    private String lastName;
    private int age;
}
在上面的代码中,我们使用了 @EqualsAndHashCode 注解来自动生成 equals 和 hashCode 方法。Lombok 会根据类中的字段自动生成这些方法的实现。
现在,让我们看一下生成的 equals 方法和 hashCode 方法:
@Override
public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Person person = (Person) o;
    if (age != person.age) return false;
    if (firstName != null ? !firstName.equals(person.firstName) : person.firstName != null) return false;
    return lastName != null ? lastName.equals(person.lastName) : person.lastName == null;
}
@Override
public int hashCode() {
    int result = firstName != null ? firstName.hashCode() : 0;
    result = 31 * result + (lastName != null ? lastName.hashCode() : 0);
    result = 31 * result + age;
    return result;
}
Lombok 根据 firstName 、 lastName 和 age 字段自动生成了 equals 和 hashCode 方法,这些方法会比较和计算这些字段的值,以判断两个 Person 对象是否相等。
使用 Lombok 的好处是,你不需要手动编写这些常用方法,这减少了冗余的代码,并且使代码更加简洁和易维护。但需要注意的是,你必须确保在项目中正确配置了 Lombok 以使其生效。