Generieren von equals / hashcode / toString mit Annotation

8

Ich glaube, ich lese irgendwo Leute, die während der Kompilierzeit (unter Verwendung von APT) equals / hashcode / toString-Methoden erzeugen, indem sie identifizieren, welche Felder Teil des Hash / Gleichheitstests sein sollen. Ich konnte so etwas im Internet nicht finden (ich könnte es geträumt haben?) ...

Das könnte so gemacht werden:

%Vor%

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

Oder wie eine skalare Fallklasse, d. h. ein Wertobjekt:

%Vor%

Nicht nur die Datei wird 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 der IDE nicht sehr gut unterstützt wird, aber ich würde das nicht als großes Problem betrachten. Schließlich werden Tests hauptsächlich von Servern mit kontinuierlicher Integration durchgeführt.

Irgendeine Idee, wenn das bereits getan wurde und wenn nicht warum? Danke

    
Bruno Bieth 29.03.2010, 03:09
quelle

3 Antworten

16

Ich verwende dafür Projekt Lombok .

    
Yuri.Bulkin 29.03.2010, 03:12
quelle
2

Während Pojomatic keine Bytecode-Kompilierung durchführt, unterstützt es die einfache Erstellung von equals, hashCode und toString-Methoden, die Annotationen verwenden, um ihr Verhalten anzupassen.

    
Ian Robertson 05.05.2010 17:02
quelle
1

Die Lösung von Google in der Bibliothek AutoValue: Ссылка verwendet @AutoValue Annotation + Generierung von Quellen vor der Kompilierung.

Mehrere konkurrierende Lösungen werden in der folgenden Präsentation behandelt: Ссылка

    
Marek Gregor 23.04.2015 11:42
quelle