CodeModel - Как определить аннотации со значением перечисления? - PullRequest
1 голос
/ 28 ноября 2011

Кажется, что структура генератора кода Java CodeModel не способна создавать аннотации, которые содержат только значение перечисления без имени - к сожалению, очень распространенный шаблон (который использует JPA,например):

  @Temporal(TemporalType.TIMESTAMP)
  private Date createDate;

Документация API содержит только "TODO Как добавить перечисления в аннотации"

Вопрос:
Есть ли способ обойти это ограничение?

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Параметры аннотации "без имени" на самом деле являются просто сокращением для параметра по умолчанию с именем "значение", поэтому они эквивалентны:

@Temporal(TemporalType.TIMESTAMP)

@Temporal(value=TemporalType.TIMESTAMP)
1 голос
/ 28 ноября 2011

Я бы сказал, что комментарий устарел.Существует метод param(String name, Enum<?> value) на JAnnotationUse, который отлично работает.

Редактировать: Код будет выглядеть следующим образом:

field.annotate(Temporal.class).param("value", TemporalType.TIMESTAMP)

Обратите внимание, что

@Temporal(TemporalType.TIMESTAMP)

Это просто сокращение для записи

@Temporal(value=TemporalType.TIMESTAMP)

Эта краткая форма может использоваться, когда аннотация содержит только один параметр.

...