假设我们有以下代码:

@Inject
private Collection<SomeKind> myCollection;


我想要的是,解决依赖关系后(我的意思是,所有属于SomeKind类型的类)也可以添加到集合中。我知道我可以注入ServiceLocator,并以编程方式在注册表上搜索实例,然后由我自己将其添加到集合中,我只是想知道这种情况下是否存在通用机制。

最佳答案

我认为您想要的是IterableProvider<SomeKind>。请参见Documentation

这是一个Iterable,因此您可以在每个循环的a中使用它

for (SomeKind someKind: someKinds) {
    ...
}


您可以按名称查找它们

@Inject
IterableProvider<SomeKind> someKinds;
...
SomeKind someKind = someKinds.named("someName").get();


这是一个complete example using Jersey

07-26 03:54