[cdi-dev] Accepting class type for simple (qualifier) annotations in APIs?

Antoine Sabot-Durand antoine at sabot-durand.net
Thu Sep 15 04:48:32 EDT 2016


> Le 15 sept. 2016 à 10:26, Martin Kouba <mkouba at redhat.com> a écrit :
> 
> Dne 15.9.2016 v 10:15 Antoine Sabot-Durand napsal(a):
>> Just a naive remark regarding Instance of annotations without members. I already used a lambda to have such an instance:
>> 
>> BeanManager.getBeans(MyBean.class, () -> MyQualifier.class)
> 
> What is this cryptic unclear lambda thing doing actually? I know it compiles but I don't understand…

It compiles and works every the time I used it. From my understanding it’s a short cut for

BeanManager.getBeans(MyBean.class, new Annotation() {
    @Override
    public Class<? extends Annotation> annotationType() {
        return MyQualifier.class;
    }
})

Which by the way also works. From your answer I guess it’s a bad solution ;), but I’d be happy to know why and what is the side effect makes it work.

Thanks,

Antoine

> 
>> 
>> I’m not sure there are no problem by using this short cut, but it is quite convenient.
>> 
>> Antoine
>> 
>> 
>>> Le 12 sept. 2016 à 12:28, arjan tijms <arjan.tijms at gmail.com> a écrit :
>>> 
>>> Hi,
>>> 
>>> Wouldn't it be convenient as the CDI API that now requires an Annotation instance in various APIs, would also accept the class type of that Annotation?
>>> 
>>> E.g. in BeanManager there's this method:
>>> 
>>> Set<Bean<?>> getBeans(Type beanType, Annotation... qualifiers)
>>> 
>>> This not rarely requires one to create an AnnotationLiteral, which is not specifically difficult but a tad verbose. For qualifiers that have no (binding) attributes, a simple Class would be much easier to use.
>>> 
>>> Thoughts?
>>> 
>>> Kind regards,
>>> Arjan Tijms
>>> _______________________________________________
>>> cdi-dev mailing list
>>> cdi-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>>> 
>>> Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.
>> 
>> 
>> _______________________________________________
>> cdi-dev mailing list
>> cdi-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/cdi-dev
>> 
>> Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.
>> 




More information about the cdi-dev mailing list