Wierzę, że czytam gdzieś ludzi generujących metody equals/hashcode/toString podczas kompilacji (przy użyciu APT) poprzez określenie, które pola powinny być częścią testu hash/równości. Nie mogłem znaleźć nic takiego w internecie (mógłbym to przyśniło?) ...Generowanie equals/hashcode/toString za pomocą adnotacji
To może być zrobione tak:
public class Person {
@Id @GeneratedValue private Integer id;
@Identity private String firstName, lastName;
@Identity private Date dateOfBirth;
//...
}
Dla podmiotu (tak chcemy exlude niektóre pola, takie jak id).
Albo jak klasa przypadku scala tj obiektu wartość:
@ValueObject
public class Color {
private int red, green, blue;
}
Nie tylko plik staje się bardziej czytelne i łatwiejsze do napisania, ale również pomaga zapewnić, że wszystkie atrybuty są częścią równe/hashcode (w przypadku późniejszego dodania innego atrybutu bez aktualizacji metod).
Słyszałem, że program APT nie jest dobrze obsługiwany w środowisku IDE, ale nie uważam tego za poważny problem. W końcu testy są prowadzone głównie przez ciągłe serwery integracyjne.
Każdy pomysł, jeśli już to zrobiono, a jeśli nie, dlaczego? Dzięki
Ciekawe podejście. Ciekawe, jaki wpływ ma wydajność. –