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
approccio interessante. Mi chiedo quale sia l'impatto sulle prestazioni. –