How to pass an Annotation as a parameter?

3.9k views Asked by At

The CDI class BeanManager has several methods which take parameters of type Annotation or Annotation.... For example BeanManager.getBeans(...).

I would like to know how I'm supposed to pass my annotations as parameters to those methods.

I've tried BeanManager.getBeans(MyBean.class, MyAnnotation.class), but it doesn't work that way. I've seen Class.isAnnotation(), but there's nothing like Class.asAnnotation() to retrieve it as an Annotation type.

Neither BeanManager.getBeans(MyBean.class, @MyAnnotation) worked, nor did BeanManager.getBeans(MyBean.class, (Annotation) MyAnnotation.class).

How can I retrieve my annotation class as type Annotation?

2

There are 2 answers

1
palacsint On BEST ANSWER

There is an example in the documentation:

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

Source: 16.6. The Bean interface

1
Hirak On

You need to use

getAnnotation(Class annotationClass) Returns this element's annotation for the specified type if such an annotation is present, else null.

Or loop through

getAnnotations() Returns all annotations present on this element.

To get the annotation.

object.getClass().getAnnotations()

javadoc