#3246·lombok

[功能] @EqualsAndHashCode 方法用于记录

作者: pawelkedra创建于 2022年8月15日更新于 2026年9月1日
标签accepted

描述该功能 是的,我知道 - equals()hashCode() 会自动为记录生成,但没有简单的方式来自定义它们。有时,您不希望比较所有对象属性,例如在 DB 实体中,通常只需要使用 ID 来实现 equals/hashCode。对于类,使用 Lombok 进行自定义非常简单:

java
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class MyEntity {
    @Id
    @EqualsAndHashCode.Include
    private UUID id;
    private String name;     
}

不幸的是,我无法对记录做同样的事情 - Lombok 的 @EqualsAndHashCode 注解不支持记录。此代码无法编译,会出现 java: @EqualsAndHashCode 仅支持类 错误:

java
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public record MyEntity (
    @Id 
    @EqualsAndHashCode.Include
    UUID id,
    String name
) {}

我认为对于记录也应该有此注解,并且仅在代码中未使用 @EqualsAndHashCode.Include/Exclude 时才抛出编译错误。

内容来源: projectlombok/lombok