[Annotation Processor] Accessing type annotations on VariableElement at compile time

DuyHai Doan doanduyhai at gmail.com
Tue May 12 13:18:47 UTC 2015


I've tried to play with the new JSR 308 feature (type annotations) and I'm
facing a rather annoying limitation:

Suppose a class:

   public static class SimpleEntityCodecFactoryTest {

        private Map<@JSON Integer,Map<@Frozen
Integer, at Enumerated(value = Enumerated.Encoding.NAME, test = "123")
String>> map;

What I need is to access all annotations set on type parameters as well as
their attribute values. Right now the only way I find so far is to cast the
VariableElement to "Symbol.VarSymbol" and then access the internal api
getMetadata(). It works but it is far from being developer-friendly.

More details here: https://gist.github.com/doanduyhai/b11f9cd843f9be557382

I've tried with
declareType.getTypeArguments().get(0).getAnnotationMirrors() but the
returned list is empty.

Note: I'm using JDK 1.8.0_45. I also tried 1.8.0_u60 but same result ...

Am I missing something or is it really a bug in the javax.lang.model
package ?


More information about the core-libs-dev mailing list