1

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();
    }
4

2 に答える 2

5

アプリケーションまたはJAXBインフラストラクチャがこれらのオブジェクトのインスタンスをコレクションまたはマップに配置する場合は、equalsおよびhashCodeメソッド使用される可能性が高くなります。

編集

hyperjaxb3のドキュメントで次のことがわかりました。

equalsおよびhashCodeメソッドの生成

これはJPA仕様では直接要求されていませんが、エンティティークラスにequalsメソッドとhashCodeメソッドを正しく実装することをお勧めします。[...] Hyperjaxb3を使用すると、equalsを構成してハッシュコードビルダーを使用するか、[...]equalsをオフにしてhashCodeの生成をオフにすることができます。

したがって、これらのメソッドの生成をオフにすることは可能であるはずですが、hyperjaxb3の設計者は、オフにしない方がよいと言っているようです。

于 2010-04-13T11:24:34.720 に答える
5

使用できます

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

equals/hashCode メソッドの生成を無効にする場合は、maven-hyperjaxb3-plugin 構成で。ただし、お勧めしません。

敬具、「hyperjaxb3 デザイナー」。:)

于 2010-07-06T07:46:59.590 に答える