当前位置: 首页 > 面试题库 >

如何自定义Eclipse生成的hashCode()和equals()?

韩刚洁
2023-03-14
问题内容

建议和有时是必要的,即表示值(类 值类
)来覆盖hashCode()equals()[和任选toString()]的方法。这些方法返回的值取决于类及其超类的成员变量的全部或子集。为了实现它们正常,你必须了解理论的一点点
散列 和代数和集理论的一点点(不要太多,几乎一切都在explaind 的javadoc 这些方法和有效的Java形式乔希布洛赫。)
在大多数情况下,此方法的实现遵循一个模板,并且IDE(如Eclipse
JDT)包括生成它们的工具。但是,工具生成器不能做任何假设,只能使用语言和标准库中可用的构造来生成这些方法。因此,这些方法通常看起来非常难看。

实现这些方法的另一种方法是使用图书馆像Apache的(公共琅)HashCodeBuilderEqualsBuilderToStringBuilder。使用这些实用程序,可以实现它们自己的hashCode()以及equals()看起来更好的方法。

我的问题是结合这两种方法。我希望能够定制Eclipse的hashCode()equals()发电机,因此将使用生成它们HashCodeBuilder和朋友。在不调整JDT的情况下是否可以(以及如何)执行此操作?仅编写将覆盖默认实现的小插件(但不更改JDT代码)。

谢谢。


问题答案:

通过请求将我的评论发布为答案:Commonclipse,这是一个方便使用Apache
Commons的Eclipse插件,可以完成您想做的事情。

警告:我没有使用此插件的最新经验,这就是为什么我最初将其发布为评论而非答案。



 类似资料:
  • 我有这样的记录: 它获取default和方法。 如何调整这些方法使其具有自定义行为?假设,我想忽略方法中的。

  • 问题内容: 我想在Eclipse中生成自定义方法,就像我们可以生成toString,getter和沉降器的方式一样(右键单击-> source->)。谁能告诉我这样做涉及什么? 谢谢, 荷兰人 问题答案: 您可以在最近(Eclipse Galileo 3.5)生成动作之后添加自己的动作, 使用主动贡献URI: 具有活动操作定义标识符: 使用有效贡献项目类:(包) 来自贡献插件:org.eclips

  • 我试图从一个XSD文件生成一个包含toString、equals和hashCode方法的Java类。我得到了toString的工作,但我无法弄清楚如何让CXF插件生成equals和hashCode方法。 这是我的XSD文件: 很好,我意识到工件不存在,但我不知道如何配置CXF插件来生成equals和hashCode方法。您知道如何配置CXF插件来生成equals和hashCode方法吗?提前感谢您

  • 问题内容: 我正在使用JAXB和xjc将XML Schema编译为Java类。我不想手动编辑此生成的类。我有这样的xml模式: xjc生成仅包含对象列表的类。是否有机会省略该类并直接在该类中具有对象列表? 我知道可以通过注释来完成,但是我不知道如何告诉xjc创建此类注释。 感谢您的任何建议! 最好的问候,马库斯 问题答案: Bjarne Hansen为xjc开发了一个插件,可以解决此问题。不幸的是

  • 您好,当我想在不更改hashCode()方法的情况下拥有一个自定义HashSet时,有人可以为我指出正确的方向。用法是拥有一组必须具有不同的一个(或多个)属性的对象。 例如,对于这个类: 我希望有UserNameSet,它只允许包含具有不同名称的用户。我不想覆盖User中的hashCode和equals方法,因为我仍然想区分同名但不同电子邮件的用户。 我想为这一个HashMap重写hashCode

  • 问题内容: Eclipse的源菜单有一个“ generate hashCode / equals方法”,它可以生成类似下面的函数。 如果在生成时选择多个字段,并且Eclipse使用上面显示的相同模式。 我不是哈希函数的专家,我想知道生成的哈希函数有多“好”吗?在哪些情况下会发生故障并导致过多的碰撞? 问题答案: 你可以看到的hashCode函数在执行的 这是一个这样的示例,您的Eclipse生成的