Получить внешний класс по аннотации члена - PullRequest
0 голосов
/ 18 марта 2020

У меня есть класс с пользовательской аннотацией для одного из полей класса:

public class Test {

    @CustomAnnotation
    private String name;

    ...
}

Я просто хочу знать, возможно ли получить Class<Test> этой аннотацией? Не могу найти подходящего API ..

public Class<?> getOuterClass(CustomAnnotation annotation) {
    ...
}

@CustomAnnotation объявлен как @Retention(RetentionPolicy.RUNTIME)

1 Ответ

0 голосов
/ 19 марта 2020

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

Вам нужно либо включить эту информацию самостоятельно, добавив параметр в аннотацию и затем использовать его @CustomAnn(Test.class), либо при чтении аннотации просто запомните и включите эту информацию самостоятельно в какой-то другой объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...