注入泛型类型时CDI的问题:Wildfly 8.2.0.Final

时间:2015-05-05 05:36:16

标签: jboss cdi wildfly wildfly-8 weld

由于CDI的变化,我们在Widfly面临着奇怪的注射问题。我们有界面

public interface Command<I, O> {
}

许多类都像这样实现这个接口

public class ApproveUserRequests implements Command<ApproveUserRequestsRequest, List<String>> {
}

应用程序监听器类喜欢获取所有可用类的列表,并使用像这样的注入

@Inject
private Instance<Command<I, O>> mActions;

然而,mActions返回的实例始终为null。调试源后发现获取所有实例列表的唯一方法是使用

@Inject
private Instance<Command<?, ?>> mActions;

我们在使用泛型类型时也遇到了注入问题,但是使用通配符类型对我们有帮助。 - 请参阅:https://developer.jboss.org/thread/256783#sthash.1s6tuXsR.dpuf

1 个答案:

答案 0 :(得分:1)

参数化类型的规则已在CDI 1.2中阐明。请查看规范的Section 5.2.4 Assignability of raw and parameterized types