他のエンティティを継承するエンティティがあります。一方、定型コードを削減するために 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
にアノテーションを追加することをお勧めします。 または が必要かどうかはクラス階層によって異なり、ケースバイケースで検討する必要があります。@Data
true
false
ただし、プロジェクトまたはパッケージの場合、lombok.config
Object の直接のサブクラスでない場合は、スーパー メソッドを呼び出すように設定できます。
lombok.equalsAndHashCode.callSuper = call
を参照してください構成システムドキュメントこれがどのように機能するか、そして@EqualsEndHashCode
ドキュメンテーションサポートされている構成キー。
開示: 私はロンボクの開発者です。