Я пытаюсь ввести ArrayList
из String
с помощью Guice. Я хочу показать панель со многими RadioButtons (например), где пользователь может выбрать некоторые сервисы для активации.Guice: Inject ArrayList of Strings
После выбора я хотел бы получить все имена выбранных сервисов и добавить их в список, а также ввести этот список менеджеру, ответственному за создание служб. Вот пример:
public class UIProviderModule extends ProviderServiceModule {
private ArrayList<String> requestedServices;
public UIProviderModule(ArrayList<String> requestedServices) {
this.requestedServices = requestedServices;
}
@Override
protected void configure() {
bindConstant().annotatedWith(Names.named(Constants.REQ_SERVICES)).to(requestedServices);
bind(IParser.class).to(UIParser.class);
super.configure();
}
}
Я видел много сообщений о Multibindings, а также о поставщиках, но я не понимаю, как это может помочь мне. Я просто хочу получить имена, поскольку я не работаю с классами, которые должны быть привязаны к интерфейсу. Я что-то упускаю?
Примечание: Я знаю, что это может быть не хороший способ использовать Guice, потому что я даю список связанным с Module
.
Еще раз спасибо @ durron597, вы, похоже, очень заинтересованы в Guice;) Ваш ответ действительно интересен, так как в этом случае я хотел бы активировать или деактивировать службы в зависимости от выбора. Как вы думаете, можно ли переопределить привязку в вашем сервисном модуле? Представьте, что для '' service1 "' у вас есть 'Service1A.class' и' Service1B.class', будет ли MapBinder хорошим решением? (Конечно, с функцией переключения привязки или чего-то еще ...) – Jacks
И еще одна вещь. Я вижу, что у вас есть модуль, определяющий службы, и 'ServiceManager'. Но как вам удается вводить 'serviceMap'? Разве это не должно быть связано с чем-то и получить через «ServiceModule»? – Jacks