注釈を使用して等しい /ハッシュコード /トストリングを生成します
-
22-09-2019 - |
質問
コンパイル時間(APTを使用)中に等しい /ハッシュコード /トストリング方法を生成している人が、どのフィールドがハッシュ /等式テストの一部であるべきかを特定する場所を読んだことがあると思います。私はウェブ上でそのようなものを見つけることができませんでした(私はそれを夢見ていたかもしれませんか?)...
それはそのようにできます:
public class Person {
@Id @GeneratedValue private Integer id;
@Identity private String firstName, lastName;
@Identity private Date dateOfBirth;
//...
}
エンティティの場合(したがって、IDのようないくつかのフィールドを拡張したい)。
またはSCALAケースクラスのように、つまり値オブジェクト:
@ValueObject
public class Color {
private int red, green, blue;
}
ファイルがより読みやすく、書き込みが容易になるだけでなく、すべての属性がEquals / HashCodeの一部であることを保証するのにも役立ちます(それに応じてメソッドを更新せずに、後で別の属性を追加した場合)。
APTはIDEではあまりサポートされていないと聞きましたが、それを大きな問題とは思わないでしょう。結局のところ、テストは主に連続統合サーバーによって実行されます。
これがすでに行われているかどうか、そしてそうでない場合は何か考えていますか?ありがとう
解決
私は使用しています プロジェクトロンボク このため。
他のヒント
その間 ポホマティック コンパイル時のバイトコード操作は行いません。アノテーションを使用して動作をカスタマイズするために、等しい、ハッシュコード、トストリング方法の簡単な作成をサポートします。
ライブラリの自動価値のGoogleのソリューション: https://github.com/google/auto/tree/master/value @AutoValueアノテーション +コンピレーション前にソースの生成を使用します。
次のプレゼンテーションでいくつかの競合するソリューションについて説明します。 https://docs.google.com/presentation/d/14u_hlmn7f1rxe1ndilx0azs3ikggjgl5jgj75re/edit