After some test I can answer myself. It’s bad because equals() is broken (2 annotations created with this code won’t be equals). And it works probably because all the equals call done in Weld are made from the inner Annotation not from user instance…
Also Annotation is not a functional interface.
Antoine
Dne 15.9.2016 v 10:48 Antoine Sabot-Durand napsal(a):
Le 15 sept. 2016 à 10:26, Martin Kouba <mkouba@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.
I don't say it's a bad solution, but it's not obvious and I consider similar things a bad practice, especially if we don't understand why it works ;-)
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@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@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@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.
-- Martin KoubaSoftware EngineerRed Hat, Czech Republic