Я полагаю, что читал где-нибудь, люди, генерирующие, равняется / хэш-код / toString методы в течение времени компиляции (использующий APT) путем идентификации, какие поля должны быть частью хеша / тест равенства. Я не мог найти ничего как этот в сети (я, возможно, мечтал он?)...
Это могло быть сделано как этот:
public class Person {
@Id @GeneratedValue private Integer id;
@Identity private String firstName, lastName;
@Identity private Date dateOfBirth;
//...
}
Для объекта (таким образом, мы хотим исключить некоторые поля, как идентификатор).
Или как scala класс случая т.е. объект значения:
@ValueObject
public class Color {
private int red, green, blue;
}
Не только файл становится более читаемым и легче записать, но он также помогает обеспечению, что все атрибуты являются частью равняния / хэш-код (в случае, если Вы добавляете другой атрибут позже, не обновляя методы соответственно).
Я слышал, что APT очень хорошо не поддерживается в IDE, но я не рассматривал бы что как главную проблему. В конце концов, тесты главным образом запущены непрерывными серверами интеграции.
Какая-либо идея, если это уже было сделано и если не почему?Спасибо
Хотя Pojomatic не выполняет манипуляции с байт-кодом во время компиляции, он поддерживает легкое создание методов equals, hashCode и toString с использованием аннотаций для настройки их поведения.