Java注释处理器:javax.validation.constraints.过去的注释更改了字段类型



Java注释处理器:javax.validation.constraints.过去的注释更改了字段类型。例如,

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。但是添加了@过去的注释

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

元素.asType((已更改为Type$AnnotatedType

为什么@Past更改了类型?但@Temporal不会改变它。如何从AnnotatedType获得TypeMirror?

根据AnnotatedType接口官方文档:

AnnotatedType表示当前在该VM中运行的程序中对类型的潜在注释使用。使用可以是Java编程语言中的任何类型,包括数组类型、参数化类型、类型变量或通配符类型。

AnnotatedType接口的getType方法返回带注释类型字段的基础类型。

Internal@Past使用getType方法检查基础数据类型是否为Date/Interval。

最新更新