我有一条记录,格式如下:
record Data(int x, int y, int a) {}
它默认获取equals
和hashCode
方法。
我该如何调整这些方法以获得自定义的行为?比方说,我想在这些方法中忽略a
。
我有一条记录,格式如下:
record Data(int x, int y, int a) {}
它默认获取equals
和hashCode
方法。
我该如何调整这些方法以获得自定义的行为?比方说,我想在这些方法中忽略a
。
很遗憾,这只有一种方法:您必须自己实现方法。就像您对所有其他类所做的那样,覆盖这些方法。在您自己的实现中,仅使用您想要的属性。您的IDE通常会帮助您实现标准代码并询问应包括哪些属性。
或者,您可以使用像Lombok这样的工具,使用注释而不是实现:
@Data
public class Data{
private int x;
private int y;
@EqualsAndHashCode.Exclude private int a;
}
@EqualsAndHashCode
不支持记录,只支持类。我已经创建了一个功能请求来更改它,随意点赞/评论:https://github.com/projectlombok/lombok/issues/3246 - Paweł