我想在Guice中实现类似于以下内容:
public MyClass {
private final InjectedObject[] injectedObjects;
@Inject
public MyClass(InjectedObject[] injectedObjects) {
this.injectedObjects=injectedObjects;
}
}
即我希望能够创建对象的一定数量的实例,并将它们作为数组注入(inject)到另一个对象中。我可能可以这样做:
public MyClass {
private final InjectedObject[] injectedObjects;
@Inject
public MyClass(InjectedObjectProvider injectedObjectProvider) {
this.injectedObjects=injectedObjectProvider.getArrayOfInjectedObjects(5);
}
}
...但是我想知道是否还有另一条路线更优雅?
最佳答案
我很好奇为什么要热切地创建几个对象。您可能会成功注入(inject)Provider<InjectedObject>
,并在每次需要实例时调用Provider.get()
。如果您确实需要5,则可以循环构建它们:
public MyClass {
private final List<InjectedObject> injectedObjects;
@Inject
public MyClass(Provider<InjectedObject> injectedObjectProvider) {
injectedObjects = new ArrayList<InjectedObject>();
for (int i = 0; i < 5; i++) {
injectedObjects.add(injectedObjectProvider.get());
}
}
}