Вы можете использовать то, что называется MultiBinding от Guice, чтобы достичь этого.
@Inject
public StepProcessor(Set<IParser> parsers) { //Inject a set of IParser
if (parsers == null) {
throw new IllegalArgumentException("Parsers cannot be null");
}
this.parsers = parsers;
}
@Override
public void process( String name ) {
for (IParser parser : parsers) {
System.out.println(parser.getName());
}
}
Теперь измените ваш модуль на это.
public class BasicModule extends AbstractModule {
@Override
protected void configure() {
MultiBinder<IParser> iParserBinder = MultiBinder.newSetBinder(binder(), IParser.class);
iParserBinder.addBinding().to(XmlParser.class);
iParserBinder.addBinding().to(JsonParser.class);
iParserBinder.addBinding().to(TextParser.class);
iParserBinder.addBinding().to(StepProcessor.class);
}
Не забудьте соответствующий импорт. Прочтите документацию, прежде чем использовать ее, чтобы понять, как именно она работает. Надеюсь, это поможет:)