Java обработчик аннотаций: javax.validation.constraints.Past аннотации изменил тип поля - PullRequest
0 голосов
/ 02 марта 2020

Java обработчик аннотаций: javax.validation.constraints.Past аннотации изменил тип поля. Например,

public class Foo {
    @javax.persistence.Temporal(TemporalType.TIMESTAMP)
    private Date date;
}

for (Element element : clsElement.getEnclosedElements()) {      
    TypeMirror type = element.asType();   // type is Type$ClassType
}

Тип Type$ClassType. Но добавляя аннотацию @Past

public class Foo {
    @javax.persistence.Temporal(TemporalType.TIMESTAMP)
    @javax.validation.constraints.Past
    private Date date;
}

element.asType () изменяется на Type$AnnotatedType.

Почему @Past изменил тип? Но @Temporal не изменит его. Как получить TypeMirror от AnnotatedType?

1 Ответ

0 голосов
/ 02 марта 2020

В соответствии с официальной документацией интерфейса AnnotatedType:

AnnotatedType представляет потенциально аннотированное использование типа в программе, в настоящее время работающей на этой виртуальной машине. Использование может быть любого типа в языке программирования Java, включая тип массива, параметризованный тип, переменную типа или тип подстановочного знака.

Метод getType интерфейса AnnotatedType возвращает базовый тип поле аннотированного типа.

Внутренне @Past использует метод getType, чтобы проверить, является ли базовый тип данных датой / интервалом.

...