[功能] @EqualsAndHashCode 方法用于记录
作者: pawelkedra创建于 2022年8月15日更新于 2026年9月1日
标签accepted
描述该功能 是的,我知道 - equals() 和 hashCode() 会自动为记录生成,但没有简单的方式来自定义它们。有时,您不希望比较所有对象属性,例如在 DB 实体中,通常只需要使用 ID 来实现 equals/hashCode。对于类,使用 Lombok 进行自定义非常简单:
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class MyEntity {
@Id
@EqualsAndHashCode.Include
private UUID id;
private String name;
}不幸的是,我无法对记录做同样的事情 - Lombok 的 @EqualsAndHashCode 注解不支持记录。此代码无法编译,会出现 java: @EqualsAndHashCode 仅支持类 错误:
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public record MyEntity (
@Id
@EqualsAndHashCode.Include
UUID id,
String name
) {}我认为对于记录也应该有此注解,并且仅在代码中未使用 @EqualsAndHashCode.Include/Exclude 时才抛出编译错误。
内容来源: projectlombok/lombok