8

コンパイル時に (APT を使用して) equals / hashcode / toString メソッドを生成している人々をどこかで読んだことがあると思います。ウェブ上でそのようなものを見つけることができませんでした(私はそれを夢見ていたかもしれませんか?) ...

それはそのように行うことができます:

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 で十分にサポートされていないと聞きましたが、それは大きな問題ではないと思います。結局のところ、テストは主に継続的インテグレーション サーバーによって実行されます。

これがすでに行われている場合、そうでない場合は理由はありますか? ありがとう

4

3 に答える 3

16

これにはProjectLombokを使用しています。

于 2010-03-29T03:12:40.713 に答える
2

Pojomaticはコンパイル時のバイトコード操作を行いませんが、注釈を使用して動作をカスタマイズすることで、equals、hashCode、および toString メソッドの簡単な作成をサポートします。

于 2010-05-05T17:02:02.103 に答える
1

ライブラリ AutoValue の Google のソリューション: https://github.com/google/auto/tree/master/valueは、コンパイル前に @AutoValue アノテーション + ソースの生成を使用します。

次のプレゼンテーションでは、いくつかの競合するソリューションについて説明しています

于 2015-04-23T11:42:37.263 に答える