我想爲所有的子類實現一個共同的提供者,想象一些模式: SuperComponent.class
是ComponentA.class
和ComponentB.class
的父代。 我有供應商:有使用Guice的子類的共同提供者嗎?
@Provides
<T extends SuperComponent> List<T> providesComponents(Provider<T> provider) {
List<T> componentList = new ArrayList<>();
for (int i = 0; i < 5; i++) {
componentList.add(provider.get());
}
return componentList;
}
的想法是需要的對象在另一個類的構造函數List<ComponentA>
和/或List<ComponentB>
時調用此提供商。 想象一下這樣的:
public class ResourceManager {
List<ComponentA> componentAList;
List<ComponentB> componentBList;
@Inject
public ResourceManager(List<ComponentA> componentAList, List<ComponentB> componentBList) {
this.componentAList = componentAList;
this.componentBList = componentBList;
}
我得到一個錯誤說:
1) com.google.inject.Provider<T> cannot be used as a key; It is not fully specified.
我怎樣才能使它發揮作用?我知道我可以爲List<ComponentA>
和List <ComponentB>
中的每一個創建不同的提供者,但我需要它,因爲在實際中,組件的數量遠遠大於2 ...
謝謝傑夫的回答! –