問題の背景
Lombok の @Data アノテーションを使用する場合、パブリック Base 基本クラスがカプセル化されるため、次の警告プロンプトが常に表示されます。
このクラスが java.lang.Object を拡張していないにもかかわらず、スーパークラスへの呼び出しを行わずに、equals/hashCode 実装を生成します。これが意図的な場合は、型に '(callSuper=false)' を追加してください。情報を確認してください: Lombok アノテーションの一般的な検査を提供して
ください。
具体的にはどのような問題があるのでしょうか?
スーパークラスの呼び出しを行わずに、equals/hashCode 実装を生成します。つまり、親クラスの属性は自動的には追加されません。
それは少し不快です。
解決
与えられた提案は、次の注釈を直接追加して解決することです。
@EqualsAndHashCode(callSuper = true)
この問題は解決できますが、特にマイクロサービスなどの比較的大規模なプロジェクトの場合は、それぞれを変更する必要があります。修正するのははるかに面倒です。
何か良い方法はないでしょうか、これは本当に存在します。
これで、プロジェクトのルート ディレクトリまたは src ディレクトリに lombok.config ファイルを直接作成できるようになりました。
次に、内部に 2 行のコードを追加すると、削除できます。
config.stopBubbling=true
lombok.equalsAndHashCode.callSuper=call
次にコードを見ると、@Data の波線が消えていることがわかります。
要約する
Ali のコーディング仕様によれば、equals を書き換える場合は、hashCode メソッドも書き換える必要があります。書き換えに失敗すると、特定のハッシュベースのデータ構造 (HashSet、HashMap など) で問題が発生する可能性があります。
したがって、いくつかの警告に対処できる場合は対処するのが最善です。