Guice / CDI / JEE6为什么instance.select(限定符)使用实例而不是MyQualifier.class的注释?

时间:2013-05-17 00:33:29

标签: java java-ee guice cdi

假设你有这个注射点:

@Inject
private Instance<DeliveryEndpoint> allEndpoints;

并且您想要选择使用@ActiveEndpoint

注释的端点子组
allActiveEndpoints.select(new AnnotationLiteral<ActiveEndpoint>(){})

为什么CDI的创造者不仅仅这样做呢?

allActiveEndpoints.select(ActiveEndpoint.class)

那会更容易......我觉得因为我不明白这一点,我最终可能会对我的代码做错事。我错过了什么?

1 个答案:

答案 0 :(得分:4)

您的ActiveEndpoint是一个简单的限定符 - 没有参数。对于带参数的限定符,这将不起作用。方法只能接受对象而限定符不是对象。