当前位置: 首页 > 知识库问答 >
问题:

如何为记录自定义equals/hashcode?

司浩壤
2023-03-14

我有这样的记录:

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

它获取defaultequalshashcode方法。

如何调整这些方法使其具有自定义行为?假设,我想忽略方法中的A

共有1个答案

华心思
2023-03-14

不幸的是,只有一种方法可以做到这一点:您必须自己实现这些方法。只需覆盖这些方法,就像覆盖所有其他类一样。在自己的实现中,只使用所需的属性。您的IDE通常帮助您实现标准代码,并询问应该包括的属性。

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

@Data
public class Data{
    private int x;
    private int y;
    @EqualsAndHashCode.Exclude private int a;
}
 类似资料:
  • 给定以下示例代码 不可能将变量传递给函数,因为 类型为“MyInterface”的参数不可分配给类型为“Record”的参数 我通过转换变量解决了这个问题

  • 问题内容: 建议和有时是必要的,即表示值(类 值类 )来覆盖,[和任选]的方法。这些方法返回的值取决于类及其超类的成员变量的全部或子集。为了实现它们正常,你必须了解理论的一点点 散列 和代数和集理论的一点点(不要太多,几乎一切都在explaind 的javadoc 这些方法和有效的Java形式乔希布洛赫。) 在大多数情况下,此方法的实现遵循一个模板,并且IDE(如Eclipse JDT)包括生成它

  • 将PostSharp用于C#应用程序,我有以下场景: Namespace_ACustomLoggingMethod Namespace_B.DoThings thingMethod(实际上是几种不同的方法) DoMomthingMethod调用CustomLoggingMethod,它以所需的格式创建日志条目并且运行良好。正如预期的那样,日志条目将源记录为CustomLoggingMethod,我

  • 类似于这个问题:如何在Jooq中初始化和创建ResultSet和记录?但使用自定义行类型记录而不是简单的表记录。我正在实例化一个jooq记录以用于模拟,但该记录有超过22列并包含来自许多连接表的行,所以我使用RecordImpl。 这引发异常 java.lang.IllegalArgumentException:行()中不包含字段(“course\u id”) 注意,我没有直接使用RecordIm

  • 我需要从包含自动生成的jooq记录的Vaadin网格中添加/删除/自定义列。 现在我喜欢(例如)添加一个按钮。 结果: java.lang.IllegalStateExcture:此Grid的容器不是Grid()构造函数的默认容器 使用Vaadin表,效果很好。但读完这篇文章后,我喜欢使用网格 我在这里找到了发生这种情况的原因 如何使用我在这里找到的简单bean编写容器 我如何才能实现与jooq记

  • 我有一个使用slf4j进行日志记录的应用程序。现在我想添加一个功能,每当我记录错误时,就会调用一个特定的url。目前,我在应用程序级别添加了一个包装器方法,该方法发送http请求,然后调用logger方法。但这样我就错过了一些输出,一些异常只是被记录下来,而没有发送相应的请求。我正在尝试创建我的自定义logger类。我的问题是应该扩展哪些类(或要实现的接口)。我无法扩展Logger类,因为它的构造