案例:

public static Annotation getAnnotation(AnnotatedElement element, String annotationTypeName) {
Class<?> annotationType = null;
try {
annotationType = Class.forName(annotationTypeName);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
return element.getAnnotation(annotationType.asSubclass(Annotation.class));
}

  ​​AnnotatedElement#getAnnotation()​​​的全貌是:​​<T extends Annotation> T getAnnotation(Class<T> annotationClass)​​​,也就是说​​getAnnotation()​​​方法的参数必须是​​Annotation.class​​​的子类,就可以利用​​Class#asSubclass()​​​方法,将其转换成​​Annotation.class​​的子类。