Подтвердить что ты не робот

Как получить аннотацию класса в java?

Я создал свой собственный тип аннотации, например:

public @interface NewAnnotationType {}

и привязал его к классу:

@NewAnnotationType
public class NewClass {
    public void DoSomething() {}
}

и я попытался получить аннотацию класса через отражение следующим образом:

Class newClass = NewClass.class;

for (Annotation annotation : newClass.getDeclaredAnnotations()) {
    System.out.println(annotation.toString());
}

но он ничего не печатает. Что я делаю неправильно?

4b9b3361

Ответ 1

Политика хранения по умолчанию RetentionPolicy.CLASS, что означает, что по умолчанию информация о аннотации не сохраняется во время выполнения:

Аннотации должны записываться в файл класса компилятором, но не должны сохраняться VM во время выполнения. Это поведение по умолчанию.

Вместо этого используйте RetentionPolicy.RUNTIME:

Аннотации должны быть записаны в файле класса компилятором и сохранены VM во время выполнения, поэтому их можно читать с рефлексивностью.

... который вы указываете с помощью мета-аннотации @Retention:

@Retention(RetentionPolicy.RUNTIME)
public @interface NewAnnotationType {
}