[hibernate-dev] Java 8, type annotations and Hibernate Validator
Gunnar Morling
gunnar at hibernate.org
Wed Apr 9 15:19:26 EDT 2014
2014-04-09 21:01 GMT+02:00 Emmanuel Bernard <emmanuel at hibernate.org>:
> I always thought that type annotations would allow us to look via
> refection to annotations like
>
> public class Foo {
> public Set< @NotNull String> names;
> }
>
> But looking at some tutorials like
> http://jaxenter.com/jsr-308-explained-java-type-annotations-49929.html
>
> it seems that these annotations are only "visible" to a compiler plug-in
> / processor.
>
> Am I right?
>
No, one can access type annotations at runtime (at least for fields, method
signatures and so on) via reflection. A while ago I feared the same, so I
asked on core-libs-dev [1] and got confirmation that it's possible. That's
how you'd do it:
// given
private List<@NotNull String> names;
Field namesField = ...;
// List<String>
AnnotatedParameterizedType type = (AnnotatedParameterizedType)
namesField.getAnnotatedType();
// String
AnnotatedType typeArg = type.getAnnotatedActualTypeArguments()[0];
// @NotNull
Annotation annotation = typeArg.getAnnotations()[0];
It's one of the planned tasks of the HV GSoC project to make use of this to
support constraints as in your example.
If that turns out true that would suck as it would only be useful to
> static tools. I wish I had checked the spec earlier to influence it :(
>
> Emmanuel
>
--Gunnar
[1]
http://mail.openjdk.java.net/pipermail/core-libs-dev/2014-March/025732.html
> _______________________________________________
> hibernate-dev mailing list
> hibernate-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/hibernate-dev
>
More information about the hibernate-dev
mailing list