如何为记录(records)创建自定义的 equals/hashCode 方法?

3

我有一条记录,格式如下:

record Data(int x, int y, int a) {}

它默认获取equalshashCode方法。


我该如何调整这些方法以获得自定义的行为?比方说,我想在这些方法中忽略a


2
你应该能够轻松地覆盖它们(但请阅读此处的内容:https://dev59.com/bFIH5IYBdhLWcg3wAnvX#61719753) - Federico klez Culloca
1
记录仍然像普通类一样运作,您可以随意添加或覆盖方法。因此,请自己创建equals/hashcode方法。 - Zabuzard
1个回答

1

很遗憾,这只有一种方法:您必须自己实现方法。就像您对所有其他类所做的那样,覆盖这些方法。在您自己的实现中,仅使用您想要的属性。您的IDE通常会帮助您实现标准代码并询问应包括哪些属性。

或者,您可以使用像Lombok这样的工具,使用注释而不是实现:

@Data
public class Data{
    private int x;
    private int y;
    @EqualsAndHashCode.Exclude private int a;
}

您能详细说明一下,并在您的答案中添加最终代码吗?也就是说,花些精力撰写一个高质量的答案?(见[答案]) - Zabuzard
Lombok的@EqualsAndHashCode不支持记录,只支持类。我已经创建了一个功能请求来更改它,随意点赞/评论:https://github.com/projectlombok/lombok/issues/3246 - Paweł

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接