Erzeugen von equals / hashcode / toString mit Annotation

Ich glaube, ich habe irgendwo gelesen, dass Leute während der Kompilierungszeit (unter Verwendung von APT) Equals / Hashcode / ToString-Methoden erzeugen, indem sie identifizierten, welche Felder Teil des Hash- / Gleichheitstests sein sollten. Ich konnte so etwas nicht im Web finden (ich hätte es vielleicht geträumt?) ...

Das könnte man so machen:

public class Person {
  @Id @GeneratedValue private Integer id;

  @Identity private String firstName, lastName;
  @Identity private Date dateOfBirth;

  //...
}

Für eine Entität (also möchten wir einige Felder wie die ID ausschließen).

Oder wie eine Scala-Case-Klasse, dh ein Wertobjekt:

@ValueObject
public class Color {
  private int red, green, blue;
}

Die Datei wird nicht nur lesbarer und einfacher zu schreiben, sondern es wird auch sichergestellt, dass alle Attribute Teil des Equals / Hashcodes sind (falls Sie später ein anderes Attribut hinzufügen, ohne die Methoden entsprechend zu aktualisieren).

Ich habe gehört, dass APT in IDE nicht sehr gut unterstützt wird, aber ich würde das nicht als großes Problem ansehen. Schließlich werden Tests hauptsächlich von Continuous Integration Servern ausgeführt.

Irgendeine Idee, ob dies bereits geschehen ist und wenn nicht, warum? Vielen Dank

Antworten auf die Frage(3)

Ihre Antwort auf die Frage