【问题标题】:How to have a custom equals/hashCode for records? [duplicate]如何为记录自定义 equals/hashCode? [复制]
【发布时间】:2021-12-29 04:45:48
【问题描述】:

我有这样的记录:

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

它获取默认的equalshashCode 方法。


我如何调整这些方法以具有自定义行为?可以说,我想在方法中忽略 a

【问题讨论】:

  • 你应该能够覆盖它们(但请阅读this
  • Records 仍然像普通类一样,你可以随意添加或覆盖方法。所以自己创建equals/hashcode方法。

标签: java equals hashcode java-record


【解决方案1】:

不幸的是,只有一种方法可以做到这一点:您必须自己实现这些方法。只需像对所有其他类一样覆盖这些方法即可。在您自己的实现中,只使用您想要的属性。您的 IDE 通常会帮助您实现标准代码并要求您提供应包含的属性。

或者,您可以使用带有注释而不是实现的 Lombok 等工具:

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

【讨论】:

  • 您能否详细说明一下,也许在您的答案中添加最终代码? IE。花一些精力写一个高质量的答案? (见How to Answer
猜你喜欢
  • 2013-07-22
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2015-04-25
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多