带通配符类型的Producer方法

时间:2014-02-26 19:57:24

标签: java generics cdi java-ee-7

我需要像这样简单的东西

@Produces
@Annotated(Licensed.class) //Qualifier
public Set<Class<?>> getLicensedClasses() {
    return licensed;
}

然而,这不起作用。 CDI的行为符合文档:

  

如果生产者字段类型包含通配符类型参数,容器会自动检测问题并将其视为定义错误。

在代码段中设置包含通过反射获得的一堆类。它是一组用@Licensed注释注释的类。

1 个答案:

答案 0 :(得分:3)

只需删除通配符:

@Produces
@Annotated(Licensed.class) //Qualifier
public Set<Class> getLicensedClasses() {
    return licensed;
}