我的问题最好用一些示例代码解释:
@Named
public class Search {
@Inject @Select(Type.SEARCH)
private Criteria criteria;
}
@Named
public class Selection {
@Inject @Select(Type.SELECTION)
private Criteria criteria;
}
public class Criteria {
private final List<Selection> statics;
private final List<Selection> choosables;
@Inject
public Criteria(
@Any Instance<List<Selection>> statics,
@Select(Type.CHOOSABLE) List<Selection> choosables,
InjectionPoint ip) {
Select sel = ip.getAnnotated().getAnnotation(Select.class);
this.statics = cloneList(statics.select(sel).get());
choosables = cloneList(choosables);
}
}
这个想法是Criteria
具有处理Selection
对象列表的所有逻辑,但是要管理的实际列表取决于Criteria
类的用户。目前,Weld抱怨无法找到具有匹配限定符的类,因为Criteria
未注释@Select
。那么 - 无论Criteria
限定符,我都能使@Select
符合注射条件吗?或者是否有另一种方法可以将这条信息传递给Criteria
类?
编辑结果显示,问题已经以类似的形式提出here。