如何在包含中使用@EqualsAndHashCode - Lombok

Sér*_*nça 27 java equals hashcode lombok

如何使用@EqualsAndHashCodeWith Include,用于 Java 的 Lombok 库。

@EqualsAndHashCode.Include( )
Run Code Online (Sandbox Code Playgroud)

如何让 Equals 比较类 ID?

例子:

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

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "IDENTITY_USER")
  private Long identity;
}
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 35

Include注释用于对成员(们)要在包括equalshashCode方法。如果要准确指定应使用哪些成员(而不是所有非静态非瞬态成员的默认值),则可以使用注释中的onlyExplicitlyIncluded = true选项@EqualsAndHashCode

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

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


Yas*_*jaj 6

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

@Target({ElementType.FIELD, ElementType.METHOD})
Run Code Online (Sandbox Code Playgroud)

这是一个如何使用它的例子

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

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


Dea*_*ool 6

Lombok中,只需在必填字段上添加@EqualsAndHashCode.Include或即可@EqualsAndHashCode.Exclude

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

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

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

  • `@EqualsAndHashCode.Include` 仅在存在 `@EqualsAndHashCode(onlyExplicitlyInincluded = true)` 时才有效。(在 lombok 版本 1.18.12 上测试) (4认同)