2010-03-29 9 views
8

Ich glaube, ich lese irgendwo Menschen, die equals/hashcode/toString-Methoden während der Kompilierzeit (mit APT) durch die Identifizierung, welche Felder sollten Teil des Hash/Gleichheitstest. Ich konnte nicht so etwas im Web finden (ich habe es geträumt könnte?) ...Generieren von equals/hashcode/toString mit Annotation

, das wie das getan werden könnte:

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

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

    //... 
} 

Für ein Unternehmen, (so wollen wir einige exlude Felder, wie die ID).

Oder wie eine scala Fall-Klasse, dh ein Wertobjekt:

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

wird nicht nur die Datei besser lesbar und einfacher zu schreiben, aber es hilft auch, um sicherzustellen, dass alle Attribute Teil des Gleichen/hashcode sind (falls Sie später ein anderes Attribut hinzufügen, ohne die Methoden entsprechend zu aktualisieren).

Ich habe gehört, APT wird nicht sehr gut in der IDE unterstützt, aber ich würde das nicht als ein großes Problem sehen. Schließlich werden Tests hauptsächlich von Servern für die kontinuierliche Integration durchgeführt.

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

Antwort

2

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

+1

Interessanter Ansatz. Frage mich, was die Auswirkung auf die Leistung ist. –

Verwandte Themen