gpt4 book ai didi

java - 如何检测 equals() 和 hashCode() 是否与类的字段不同步?

转载 作者:行者123 更新时间:2023-12-01 19:35:51 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




我有一个代码库,其中几乎在所有情况下都有一个实现 equals 的类和 hashCode应该包括类包含的每个字段的比较和哈希。例如,默认 equalshashCode IDE 将自动生成的方法是合适的。创建这些方法很容易,但随着时间的推移维护它们却很困难。是否有一个自动化工具可以分析代码库并生成其equals 的类列表?和 hashCode方法与它们的字段不同步?

在最好的情况下,它将具有以下每个功能,但仅执行 #1 的工具已经很有用:

  • 列表 classesequalshashCode使用彼此不同的一组字段或来自类上定义的字段的实现。
  • 允许指定某个类中的某些字段被有意排除在equals 之外的方法。/hashCode ,因此不应出现在 equals 中/hashCode .
  • 还列出其字段与其equals 不匹配的类。/hashCode由于继承。这些是定义字段的类,并且
  • 覆盖 superclass 中的 equals 和 hashCode但未包含 super.equals/super.hashCode在覆盖中,
  • 覆盖 equals/hashCode并调用 super,但 superclass定义字段并且不覆盖它自己的 equalshashCode , 或
  • 继承自定义equalshashCode来自 superclass而不覆盖它。
  • 最佳答案

    Is there an automated tool that can analyze a codebase and produce a list of classes whose equals and hashCode methods are not in sync with their fields



    您可以使用 Lombok - 自动为您的 java 类生成样板代码的 java 库。您将其添加为依赖项,将 special annotation到您的类(class),仅此而已-每次更改都会为您重新生成正确的方法
    @EqualsAndHashCode
    public class MyComplicatedClass {
    ...
    }

    关于java - 如何检测 equals() 和 hashCode() 是否与类的字段不同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57599910/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com