Я пытаюсь получить детали аннотации из ссылочной переменной супертипа, используя отражение, чтобы метод принимал все подтипы. Но isAnnotationPresent ()
возвращает false
. То же самое с другими методами, связанными с аннотациями. Если используется точный тип, результат будет таким, как ожидалось.
Я знаю, что аннотационная информация будет доступна для объекта, даже если я ссылаюсь на супертип.
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE})
public @interface Table {
String name();
}
@Table(name = "some_table")
public class SomeEntity {
public static void main(String[] args) {
System.out.println(SomeEntity.class.isAnnotationPresent(Table.class)); // true
System.out.println(new SomeEntity().getClass().isAnnotationPresent(Table.class)); // true
Class<?> o1 = SomeEntity.class;
System.out.println(o1.getClass().isAnnotationPresent(Table.class)); // false
Class<SomeEntity> o2 = SomeEntity.class;
System.out.println(o2.getClass().isAnnotationPresent(Table.class)); // false
Object o3 = SomeEntity.class;
System.out.println(o3.getClass().isAnnotationPresent(Table.class)); // false
}
}
Как получить информацию об аннотации?