我们由于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
在CDI 1.2中已经阐明了参数化类型的规则。请查看第5.2.4节规格的原始和参数化类型的分配性。