Java-аннотации - есть ли вспомогательная библиотека для чтения / обработки аннотаций? - PullRequest
7 голосов
/ 08 апреля 2010

Я начинаю интенсивно использовать аннотации Java. Одним из примеров является использование метода с аннотациями и преобразование их в команду командной строки на основе telnet. Я делаю это путем разбора аннотаций и подключаюсь к анализатору параметров jopt.

Тем не менее, я делаю многое из этого вручную. Например, обработка аннотации параметра метода.

Method method = ... //;
Class[] parameters = method.getParamterTypes();
Annotation[][] annotations = method.getparamterAnnotations();

for( int i = 0; i < parameters.length; i++ )
{
   // iterate through the annotation , see if each param has specific annotation ,etc.
}

Это очень избыточно и утомительно.

Есть ли какой-нибудь проект с открытым исходным кодом, который помогает обрабатывать аннотации?

Ответы [ 3 ]

6 голосов
/ 08 апреля 2010

Мы используем это для поиска конкретной аннотации:

for (Field field : clazz.getDeclaredFields()) {
    if (field.isAnnotationPresent(MyAnnotation.class)) {
        field.setAccessible(true);
        String fieldName = field.getName();
        Object fieldValue = field.get(myObj);
        field.setAccessible(false);
    }
}
1 голос
/ 08 апреля 2010

Любой проект будет содержать точно такой же шаблонный код. Почему бы вам не сделать свою собственную утилиту?

Я уверен, что вы могли бы использовать ASM:

0 голосов
/ 08 апреля 2010

Не совсем уверен, какая помощь вам нужна для аннотаций, но я бы посоветовал вам взглянуть на мой Annox проект. Вот API .

С Annox вы можете, например, читать аннотации в

  • XAnnotation
  • XAnnotationField
  • XPackage
  • XCLASS
  • XConstructor
  • XField
  • XMethod
  • XParameter

структур, которые могут лучше соответствовать вашим потребностям. Вы можете читать произвольные аннотации из XML, запускать на них посетителей и т. Д.

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