2014-05-21 30 views
7

Klasa CDI BeanManager ma kilka metod, które przyjmują parametry typu Annotation lub Annotation.... Na przykład BeanManager.getBeans(...).Jak przekazać adnotację jako parametr?

Chciałbym wiedzieć, w jaki sposób mam przekazywać moje adnotacje jako parametry tych metod.

Próbowałem już BeanManager.getBeans(MyBean.class, MyAnnotation.class), ale to nie działa w ten sposób. Widziałem Class.isAnnotation(), ale nie ma to jak Class.asAnnotation(), aby pobrać go jako typ Annotation.

Nie działał ani BeanManager.getBeans(MyBean.class, @MyAnnotation), ani BeanManager.getBeans(MyBean.class, (Annotation) MyAnnotation.class).

Jak mogę pobrać moją klasę adnotacji jako typ Annotation?

+0

Nie jest jasne co próbujesz zrobić. BeanManager.getBeans (...) zwraca instancje komponentu bean określonego typu. Jeśli próbujesz przeczytać same adnotacje, musisz użyć odbicia opisanego przez @Hirak. –

Odpowiedz

7

Jest to przykład w dokumentacji:

beanManager.getBeans(Object.class, new AnnotationLiteral<Any>() {}); 

Źródło: 16.6. The Bean interface

+2

To załatwiło sprawę. To jednak dziwne rozwiązanie. Myślałem, że standardowy interfejs Java API będzie oferował coś bardziej wygodnego. – noone

0

Trzeba użyć

getAnnotation (klasa annotationClass) Zwraca element ten jest adnotacji dla określonego typu, jeżeli taka adnotacja jest obecny, inny NULL.

Albo pętli

getAnnotations() zwraca wszystkie adnotacje obecnych na tym elemencie.

Aby uzyskać adnotację. .

object.getClass() getAnnotations()

javadoc

+0

Nie jestem pewien, co nazwałbym jedną z tych metod. Na samej klasie adnotacji? – noone

Powiązane problemy