有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我们需要HyperJAXB生成的hashCode&equals方法吗?

我们已经使用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();
    }

共 (2) 个答案

  1. # 1 楼答案

    你可以用

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

    如果要禁用equals/hashCode方法生成,请在maven-hyperjaxb3-plugin配置中。不过,我不推荐

    敬上,“hyperjaxb3设计师”。)

  2. # 2 楼答案

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

    编辑

    我在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.

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