Instances of an annotation interface generally return a random proxy class when getClass() is called on them; to get the actual annotation type use annotationType().
In the following example, calling getClass() on the annotation instance returns a proxy class like com.sun.proxy.$Proxy1, while annotationType() returns Deprecated.
@Deprecated public class Test { static void printAnnotationClass(Annotation annotation) { System.err.println(annotation.getClass()); System.err.println(annotation.annotationType()); } public static void main(String[] args) { printAnnotationClass(Test.class.getAnnotation(Deprecated.class)); } }
Prints:
class com.sun.proxy.$Proxy1 interface java.lang.Deprecated