This must be described elsewhere, but a quick Googling didn't give it to me. A little experimentation reveals to me that JDK 5.0 annotations are dynamic proxies under the hood.
To find this out, I made an annotation named
@annotate and exammined
annotation.class; it revealed itself to be an interface. I then decorated a method with
@annotate, got the
Method with reflection, pulled the appropriate annotation class off with
getAnnotation(annotate.class).getClass() and examined that: dynamic proxy,
I wonder how I can use this knowlege for some real Java-fu.
UPDATE: An even stronger answer:
true on the method annotation class, and the proxy invocation handler is a
sun.reflect.annotation.AnnotationInvocationHandler. Good thing Sun provides source for the non-public bits.