2010-03-29 18 views
8

Credo di aver letto da qualche parte persone che generano metodi equals/hashcode/toString durante la compilazione (utilizzando APT) identificando quali campi dovrebbero far parte del test hash/uguaglianza. Non riuscivo a trovare qualcosa di simile sul web (avrei potuto sognato?) ...Generazione di equals/hashcode/toString tramite annotazione

che potrebbe essere fatto così:

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

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

    //... 
} 

Per un'entità (quindi vogliamo exlude qualche campi, come l'id).

O come una classe case scala vale a dire un oggetto di valore:

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

Non solo il file diventa più leggibile e più facile da scrivere, ma aiuta anche a garantire che tutti gli attributi sono parte del uguali/hashcode (nel caso in cui si aggiunga un altro attributo in seguito, senza aggiornare i metodi di conseguenza).

Ho sentito che APT non è supportato molto bene in IDE ma non lo vedrei come un problema importante. Dopo tutto, i test vengono principalmente eseguiti da server di integrazione continui.

Qualche idea se questo è già stato fatto e se no perché? Grazie

risposta

2

Mentre Pojomatic non esegue la manipolazione bytecode in fase di compilazione, supporta la facile creazione di metodi equals, hashCode e toString, utilizzando le annotazioni per personalizzare il loro comportamento.

+1

approccio interessante. Mi chiedo quale sia l'impatto sulle prestazioni. –

Problemi correlati