How to pass an Annotation as a parameter?

annotations, bean-manager, cdi, java, parameters

Solution

There is an example in the documentation:

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

Source: 16.6. The Bean interface

Problem

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`?

Original source