Я обнаружил, что:
Когда я использую Class<?>
для объявления переменной, getAnnotation
действует как:
public <A extends Annotation> A getAnnotation(Class<A> annotationClass)
, но когда я использую Class
для объявления переменной, getAnnotation
действует как:
public Annotation getAnnotation(Annotation annotationClass)
, поэтому я не смог скомпилировать код, который использует переданные методы, специфичные для класса аннотаций.
например: я мог бы скомпилировать ((Class<?>)clazz).getAnnotation(Human.class).age()
, но не смог скомпилировать ((Class)clazz).getAnnotation(Human.class).age()
, где clazz
- это некоторый экземпляр Class
, а Human
- интерфейс аннотации, который имеет метод age
.