継承を伴うLombokの@Dataアノテーションのequals/hashCodeの警告 質問する

継承を伴うLombokの@Dataアノテーションのequals/hashCodeの警告 質問する

他のエンティティを継承するエンティティがあります。一方、定型コードを削減するために Lombok プロジェクトを使用しているため、@Dataアノテーションを付けました。継承のアノテーション@Dataにより、次の警告が生成されます。

このクラスは java.lang.Object を拡張していないにもかかわらず、スーパークラスへの呼び出しなしで equals/hashCode 実装を生成しています。これが意図的な場合は、@EqualsAndHashCode(callSuper=false)型に追加してください。

以下の質問があります:

  • 注釈を追加することをお勧めします@EqualsAndHashCode(callSuper = true)@EqualsAndHashCode(callSuper = false)?
  • 追加されていない場合はどれですか?callSuper=falseまたはcallSuper=true?

ベストアンサー1

デフォルト値ですfalse。これを指定せずに警告を無視すると、これが返されます。

はい、 Object 以外のものを拡張するアノテーション付きクラス@EqualsAndHashCodeにアノテーションを追加することをお勧めします。 または が必要かどうかはクラス階層によって異なり、ケースバイケースで検討する必要があります。@Datatruefalse

ただし、プロジェクトまたはパッケージの場合、lombok.configObject の直接のサブクラスでない場合は、スーパー メソッドを呼び出すように設定できます。

lombok.equalsAndHashCode.callSuper = call

を参照してください構成システムドキュメントこれがどのように機能するか、そして@EqualsEndHashCodeドキュメンテーションサポートされている構成キー。

開示: 私はロンボクの開発者です。

おすすめ記事