| 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`. |
| |
| ```java |
| @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 |
| ``` |