Генерация равняется / хэш-код / toString использование аннотации

Я полагаю, что читал где-нибудь, люди, генерирующие, равняется / хэш-код / 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, но я не рассматривал бы что как главную проблему. В конце концов, тесты главным образом запущены непрерывными серверами интеграции.

Какая-либо идея, если это уже было сделано и если не почему?Спасибо

8
задан Bruno Bieth 29 March 2010 в 03:09
поделиться

2 ответа

Я использую для этого Project Lombok .

16
ответ дан 5 December 2019 в 08:51
поделиться

Хотя Pojomatic не выполняет манипуляции с байт-кодом во время компиляции, он поддерживает легкое создание методов equals, hashCode и toString с использованием аннотаций для настройки их поведения.

2
ответ дан 5 December 2019 в 08:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: