案例:
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
的子类。