noone
noone

Reputation: 19776

How to pass an Annotation as a parameter?

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?

Upvotes: 8

Views: 3981

Answers (2)

palacsint
palacsint

Reputation: 28865

There is an example in the documentation:

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

Source: 16.6. The Bean interface

Upvotes: 9

Hirak
Hirak

Reputation: 3649

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

Upvotes: 0

Related Questions