我们是否需要 HyperJAXB 生成 hashCode 和 hashCode?等于方法吗?

发布于 2024-08-28 11:47:46 字数 833 浏览 11 评论 0原文

我们使用 HyperJAXB 生成了一些(很多)类。所有类都实现 Equals 和 HashCode,并具有以下实现风格。看来这段代码从未被执行过。我们需要这段代码有什么特殊原因吗?如果可以的话,我希望简化课程。

   public boolean equals(Object object) {
        if (!(object instanceof MyClass)) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final EqualsBuilder equalsBuilder = new JAXBEqualsBuilder();
        equals(object, equalsBuilder);
        return equalsBuilder.isEquals();
    }

    public void hashCode(HashCodeBuilder hashCodeBuilder) {
        hashCodeBuilder.append(this.getValue());
        hashCodeBuilder.append(this.getId());
    }

    public int hashCode() {
        final HashCodeBuilder hashCodeBuilder = new JAXBHashCodeBuilder();
        hashCode(hashCodeBuilder);
        return hashCodeBuilder.toHashCode();
    }

We've generated some (well a lot) of classes using HyperJAXB. All of the classes implement Equals and HashCode and have the implementation style below. Appears this code is never executed.. is there any particular reason we need this code? I'm looking to simplify the classes if we can.

   public boolean equals(Object object) {
        if (!(object instanceof MyClass)) {
            return false;
        }
        if (this == object) {
            return true;
        }
        final EqualsBuilder equalsBuilder = new JAXBEqualsBuilder();
        equals(object, equalsBuilder);
        return equalsBuilder.isEquals();
    }

    public void hashCode(HashCodeBuilder hashCodeBuilder) {
        hashCodeBuilder.append(this.getValue());
        hashCodeBuilder.append(this.getId());
    }

    public int hashCode() {
        final HashCodeBuilder hashCodeBuilder = new JAXBHashCodeBuilder();
        hashCode(hashCodeBuilder);
        return hashCodeBuilder.toHashCode();
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

巷雨优美回忆 2024-09-04 11:47:46

如果您的应用程序或 JAXB 基础设施曾经将这些对象的实例放入集合或映射中,那么 equalshashCode 方法很可能 被使用。

编辑

我在hyperjaxb3文档:

生成 equals 和 hashCode 方法

虽然 JPA 规范没有直接要求这一点,但仍然建议在实体类中正确实现 equals 和 hashCode 方法。 [...] 使用 Hyperjaxb3,您可以配置将使用的 equals 和 hash Code 生成器 [...] 或关闭 equals 和 hashCode 生成。

因此应该可以关闭这些方法的生成,但 hyperjaxb3 设计者似乎说最好不要这样做。

If your application or the JAXB infrastructure ever puts instances of those objects into collections or maps, then there is a good chance that the equals and hashCode methods will be used.

EDIT

I found the following in the hyperjaxb3 documentation:

Generating equals and hashCode methods

Although this is not directly required by the JPA specification, it is still recommended to have correct implementations of equals and hashCode methods in entity classes. [...] With Hyperjaxb3 you can configure, which equals and hash code builders will be used [...] or turn off equals and hashCode generation off.

So it should be possible to turn off generation of those methods, but the hyperjaxb3 designers seem to be saying that it is better not to.

无尽的现实 2024-09-04 11:47:46

可以在 maven-hyperjaxb3-plugin 配置中使用

<generateEquals>false</generateEquals>
<generateHashCode>false</generateHashCode>

如果您想禁用 equals/hashCode 方法生成, 。不过我不会推荐这样做。

此致,“hyperjaxb3 设计师”。 :)

You can use

<generateEquals>false</generateEquals>
<generateHashCode>false</generateHashCode>

in your maven-hyperjaxb3-plugin configuration if you want to disable equals/hashCode methods generation. However I won't recommend to.

Sincerely yours, "hyperjaxb3 designers". :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文