Lombok中EqualsAndHashCode注解如何使用
更新时间:2023-11-15什么是Lombok中的@EqualsAndHashCode注解
Lombok是一个Java库,它可以根据类定义自动生成代码。 @EqualsAndHashCode是Lombok提供的一种注解,是用于自动生成 equals 和 hashCode 方法代码的注解。以前程序员手动编写的 equals 和 hashCode 方法只是进行了属性值的比较,如果属性值都相等,那么对象才算是相等的,而有了@EqualsAndHashCode注解,则可以使用注解来自动生成equals 和 hashCode方法的代码,从而简化了开发人员的工作。
//创建Java类并添加注解 import lombok.EqualsAndHashCode; @EqualsAndHashCode public class Student { private int id; private String name; private String sex; // 构造方法、getter、setter 省略 }
如何使用Lombok中的@EqualsAndHashCode注解
使用@EqualsAndHashCode注解非常简单,只需要在Java类中使用即可,使用属性exclude可以指定不参与hashCode和equals比较的属性
import lombok.Data; import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(exclude = {"specialId"}) public class Student { private int id; private String name; private String sex; private int specialId; //构造方法、getter、setter省略 }
Lombok中@EqualsAndHashCode注解的使用示例
接下来我们用一个例子来展示如何使用Lombok中@EqualsAndHashCode注解,并调用equals和hashCode方法
@Data @EqualsAndHashCode(exclude = {"specialId"}) public class Student { private int id; private String name; private String sex; private int specialId; //构造方法、getter、setter省略 } public class TestStudent { @Test public void testStudent() { // 实例化两个学生对象 Student stu1 = new Student(1, "张三", "男", 1001); Student stu2 = new Student(1, "张三", "男", 1002); System.out.println("stu1 hashCode:" + stu1.hashCode()); // 337 System.out.println("stu2 hashCode:" + stu2.hashCode()); // 1277 System.out.println("stu1 equals stu2: " + stu1.equals(stu2)); // false Student stu3 = new Student(1, "张三", "男", 1002); System.out.println("stu2 equals stu3: " + stu2.equals(stu3)); // true } }
总结
@EqualsAndHashCode注解是Lombok中用于自动生成equals 和 hashCode 方法代码的注解。可以减少开发人员编写这些方法的工作量,同时简化代码。在使用过程中,我们也可以使用exclude属性,用于指定不参与hashCode和equals比较的属性。