由于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
答案 0 :(得分:1)
参数化类型的规则已在CDI 1.2中阐明。请查看规范的Section 5.2.4 Assignability of raw and parameterized types。