Сначала см. java.lang.annotation.Inherited
.
Во-вторых, как отмечали другие, ваш код немного отличается от вашего вопроса.
В-третьих, чтобы ответить на ваш вопрос ..
Я сталкивался с подобной потребностью много раз, поэтому я написал короткий класс AnnotationUtil, чтобы сделать это и некоторые другие подобные вещи. Spring Framework предлагает аналогичный класс AnnotationUtils, и я полагаю, что дюжина других пакетов сегодня также в значительной степени содержат этот фрагмент кода, поэтому вам не нужно изобретать велосипед.
В любом случае, это может вам помочь.
public static <T extends Annotation> T getAnnotation(Class<?> clazz, Class<T> annotationType) {
T result = clazz.getAnnotation(annotationType);
if (result == null) {
Class<?> superclass = clazz.getSuperclass();
if (superclass != null) {
return getAnnotation(superclass, annotationType);
} else {
return null;
}
} else {
return result;
}
}