Frage

Ich glaube, ich habe irgendwo gelesen, wie Menschen während der Kompilierungszeit (mit APT) gleiche Methoden für gleiche / hashcode / tostring -Methoden gelesen haben, indem er feststellte, welche Felder Teil des Hash- / Gleichstellungstests sein sollten. Ich konnte so etwas im Internet nicht finden (ich hätte es vielleicht geträumt?) ...

Das könnte so gemacht werden:

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

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

  //...
}

Für eine Entität (also wollen wir einige Felder wie die ID ausführen).

Oder wie eine Skala -Fallklasse dh ein Wertobjekt:

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

Nicht nur die Datei wird lesbarer und einfacher zu schreiben, sondern hilft auch, sicherzustellen, dass alle Attribute Teil des Equals / HashCode sind (falls Sie ein weiteres Attribut später 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 Hauptproblem sehen. Immerhin werden Tests hauptsächlich von kontinuierlichen Integrationsservern durchgeführt.

Irgendeine Idee, ob dies bereits getan wurde und wenn nicht warum? Vielen Dank

War es hilfreich?

Lösung

Ich benutze Projekt Lombok dafür.

Andere Tipps

Während Pojomatisch Kompilierende Bytecode-Manipulation nicht, sondern unterstützt die einfache Schaffung von Methoden für Gleich-, Hashcode- und ToString-Methoden, wobei Annotationen verwendet werden, um ihr Verhalten anzupassen.

Googles Lösung in Bibliothek autovalue: https://github.com/google/auto/tree/master/value Verwendet @Autovalue Annotation + Generation von Quellen vor der Zusammenstellung.

In der folgenden Präsentation werden mehrere konkurrierende Lösungen erörtert: https://docs.google.com/presentation/d/14u_h-lmn7f1rxe1ndilx0azs3iKGjgl5uxp5jgj75re/edit

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top