Вы должны сначала связать это
В вашей конфигурации:
@Provides HashSet<WorkWindow> provideChildWorkWindows() {
// Create and return your HashSet<WorkWindow>
}
Тогда только оно будет введено в ваш CompositeWorkWindows
.
Если вы хотите связать несколько независимых WorkWindow
, используйте мультисвязывание Guice. Но в этом случае вы должны использовать интерфейс Set
в качестве получателя вместо реализации HashSet
, потому что Guice предоставит Set
, но не HashSet
. Обратите внимание, что мультисвязывание позволяет вам иметь определения элементов в разных модулях.
In MyModule.java
:
Multibinder<WorkWindow> workWindowBinder = Multibinder.newSetBinder(binder(), WorkWindow.class);
workWindowBinder.addBinding().toInstance(new MyWorkWindow());
In OtherModule.java
:
Multibinder<WorkWindow> workWindowBinder = Multibinder.newSetBinder(binder(), WorkWindow.class);
workWindowBinder.addBinding().to(OtherWorkWindow.class);
В FinalModule.java
:
Multibinder<WorkWindow> workWindowBinder = Multibinder.newSetBinder(binder(), WorkWindow.class);
workWindowBinder.addBinding().toProvider(new FinalWorkWindowProvider());
Если в инжекторе присутствуют все модули, вы получите Set
размером 3, содержащий три различных WorkWindow
, которые вы создали.