@EqualsAndHashCode用法作用
时间: 2023-10-14 07:08:48 浏览: 39
`@EqualsAndHashCode` 是一个注解,用于在 Java 类中生成 `equals` 和 `hashCode` 方法,自动生成的方法默认使用所有非静态、非瞬时的属性进行比较和哈希。
使用 `@EqualsAndHashCode` 注解可以使类更易于使用,因为它自动生成了 `equals` 和 `hashCode` 方法,这样我们不需要手动编写这些方法,也可以确保这些方法正确覆盖了 `Object` 类的方法,从而避免了一些潜在的问题。
例如,如果我们有一个 `Person` 类,我们可以使用 `@EqualsAndHashCode` 注解来生成 `equals` 和 `hashCode` 方法:
```java
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class Person {
private String name;
private int age;
}
```
这样,我们就可以使用 `equals` 方法来比较两个 `Person` 对象是否相等,使用 `hashCode` 方法来获取 `Person` 对象的哈希码了。
相关问题
@EqualsAndHashCode的作用
`@EqualsAndHashCode` 是 Lombok 提供的注解之一,用于自动生成 `equals()` 和 `hashCode()` 方法。在 Java 中,当我们需要比较两个对象是否相等时,我们通常需要覆盖 `equals()` 和 `hashCode()` 方法。
使用 `@EqualsAndHashCode` 注解后,Lombok 会自动为我们生成这两个方法,避免了手动编写的繁琐和容易出错的过程。此外,注解还提供了一些可选参数,允许我们指定需要参与比较的属性、是否使用非空性检查等。
示例代码:
```java
import lombok.EqualsAndHashCode;
@EqualsAndHashCode
public class MyClass {
private int id;
private String name;
}
```
上面的代码中,`@EqualsAndHashCode` 注解应用在类上,表示为该类自动生成 `equals()` 和 `hashCode()` 方法。默认情况下,注解会使用所有非静态、非瞬态字段来生成方法。如果我们需要指定特定的字段,可以使用 `@EqualsAndHashCode` 注解的 `of` 属性:
```java
import lombok.EqualsAndHashCode;
@EqualsAndHashCode(of = {"id", "name"})
public class MyClass {
private int id;
private String name;
private int age;
}
```
上面的代码中,`of` 属性指定了 `id` 和 `name` 两个字段参与 `equals()` 和 `hashCode()` 方法的比较。`age` 字段不会被考虑。
总之,`@EqualsAndHashCode` 注解提供了一种简单、便捷的方式来生成 `equals()` 和 `hashCode()` 方法,减少了代码冗余和出错的可能性。
@EqualsAndHashCode 注解的作用
@EqualsAndHashCode注解是Lombok库提供的一个注解,它可以帮助我们自动生成equals()和hashCode()方法。默认情况下,@EqualsAndHashCode注解会根据类中的所有非静态和非瞬态的属性来生成equals()和hashCode()方法。这意味着,如果我们在子类中使用@EqualsAndHashCode(callSuper = true)来标记一个属性,那么在生成equals()和hashCode()方法时,也会考虑到父类中的属性。
使用@EqualsAndHashCode注解可以简化我们的代码,并且确保equals()和hashCode()方法遵循正确的重写规则。这样可以确保我们在使用集合类或比较对象时,能够正确地判断它们的相等性。此外,@EqualsAndHashCode注解还可以帮助我们避免手动编写这些方法,减少了代码量。