From Alexey Gavrilov:
I've noticed that JSR 308 type annotations on type parameters are not
visible when doing the annotation processing of java *class* files. For
example, if I compile the sample class T below and run my simple
annotation processor that prints contents on the processed java class,
then the "@X" annotation on the "A" type variable is not printed out:
====
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@interface X {}
public class T {
@X
public <@X A> void foo() {}
}
====
# jdk7/bin/javac MyProcessor.java T.java
# jdk7/bin/javac -processor MyProcessor T
TypeParam: A
TypeParamAnnotation:
However, the annotation processing of the java source works fine:
# jdk7/bin/javac -processor MyProcessor T.java
TypeParam: A
TypeParamAnnotation: @X