提问者:小点点

如何在Include中使用@EqualsAndHashCode-Lombok


如何使用@EqualsAndHashCode包含,Lombok库Java。

@EqualsAndHashCode.Include( )

如何让等号比较类 ID?

示例:

@EqualsAndHashCode.Include( )
@Table(name = "USER")
public class User
{

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "IDENTITY_USER")
  private Long identity;
}

共3个答案

匿名用户

Include注释用于要包含在等于方法中的成员。如果要精确指定应使用哪些成员(而不是所有非静态非临时成员的默认值),可以在@EqualsAndHashCode注释中使用onlyExplicitlyIncluded=true选项:

@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Table(name = "USER")
public class User
{

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "IDENTITY_USER")
  @EqualsAndHashCode.Include
  private Long identity;
}

匿名用户

您应该在字段上使用它,它不是用于类本身的东西。您可以通过检查定义以下目标(字段和方法,而不是类)的注释的定义来检查这一点

@Target({ElementType.FIELD, ElementType.METHOD})

下面是如何使用它的示例

@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@Table(name = "USER")
public class User
{

  @Id
  @EqualsAndHashCode.Include()
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "IDENTITY_USER")
  private Long identity;
}

匿名用户

在龙目岛,只需在必填字段上添加@EqualsAndHashCode.包含@EqualsAndHashCode.排除

任何类定义都可以使用@EqualsAndHashCode进行注释,以让lombok生成equals(Object其他)和hashCode()方法的实现。默认情况下,它将使用所有非静态、非瞬态字段,但您可以通过使用@EqualsAndHashCode.包括或@EqualsAndHashCode.排除标记类型成员来修改使用的字段(甚至指定要使用各种方法的输出)。或者,您可以通过使用@EqualsAndHashCode.包括并使用@EqualsAndHashCode标记它们来准确指定您希望使用的字段或方法。

@EqualsAndHashCode
@Table(name = "USER")
public class User
  {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "IDENTITY_USER")
  @EqualsAndHashCode.Include
  private Long identity;
 }