Добавить пользовательский метод в системный класс - PullRequest
0 голосов
/ 12 марта 2012

Я буду использовать конкретный пример, чтобы его было легче понять.

Вместо использования:

Annotation[] annotations = method.getAnnotations();

Я бы хотел получить массив типов классов, связанных с каждой аннотацией:

Class<?>[] annotationClasses = method.getAnnotationTypes();

Есть ли способ переопределить класс Method и добавить мой пользовательский метод, который будет использовать getAnnotations для сбора аннотаций, но будет возвращать тип класса вместо типа Annotation?

1 Ответ

1 голос
/ 12 марта 2012

Нет способа сделать именно то, что вы запрашиваете. Method является окончательным и не может быть продлен.

Однако вы могли бы сделать

Class < ? > [ ] getDeclaredAnnotations ( Method method )
{
       Annotation [ ] as = method . getDeclaredAnnotations ( ) ;
       Class < ? > [ ] bs = new Class < ? > [ as . length ] ;
       for ( int i = 0 ; i < as . length ; i ++ )
       {
              Annotation a = as [ i ] ;
              b [ i ] = a ;
       }
       return bs ;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...