Guice Multibinder с провайдерами

Я пытаюсь иметь возможность иметь это в моем коде

@Inject
private Map providers;

Я пытался, но этот код не компилируется

MapBinder mapbinder = MapBinder.newMapBinder(binder, String.class, Provider.class);
mapbinder.addBinding("splineV1Beta").to(SplineProcessor.class);
mapbinder.addBinding("invertV1Beta").to(InvertProcessor.class);

Этот код не запускается при запуске, так как он можетпривязать мою карту

MapBinder mapbinder = MapBinder.newMapBinder(binder, String.class, Processor.class);
mapbinder.addBinding("splineV1Beta").to(SplineProcessor.class);
mapbinder.addBinding("invertV1Beta").to(InvertProcessor.class);

Как правильно настроить привязки здесь?

ПРИМЕЧАНИЕ: я тоже ищу что-то простое, поэтому разработчики просто добавляют по одной строке каждый раз, когда у нас новый процессор (надеюсь, я ненужно добавить одну строку + какой-то заводской интерфейс ... должен быть способ, но я пробовал другие вещи в дополнение к вышеописанному с помощью методов TypeLiteral и toProvider ()).

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ: хорошо, я узнал, есть ли у меня строка ниже (но вообще не вызывать addBinding) Guice запустится, что хорошо, но все сигнатуры метода addBinding (). Теперь неверны, так как они хотят

Provider
//This below line ends up with mabbinder2.addBinder().to() wanting the above param type?
MapBinder mapbinder2 = MapBinder.newMapBinder(binder, stringLit, list);

РАДИКАЛЬНО изменить свое мышление, и я пытаюсь ввести что-то вроде этого (надеясь, что map.get ("ххх») каждый раз создает новые экземпляры ...

@Inject
private Map providers;

и я связал это так, но, к сожалению, карта всегда возвращает один и тот же экземпляр: (...

MapBinder mapbinder = MapBinder.newMapBinder(binder, String.class, Processor.class);
mapbinder.addBinding("splineV1Beta").toProvider(new TypeLiteral() {;});
mapbinder.addBinding("invertV1Beta").toProvider(new TypeLiteral() {;});

РЕДАКТИРОВАТЬ: в соответствии с этим документомhttp://google-guice.googlecode.com/svn/trunk/latest-javadoc/com/google/inject/multibindings/MapBinder.html Вы можете иметь

 MapBinder and inject a Map

но когда я делаю это (с закрытым полем), я получаю следующее .... (тогда как, когда я перехожу на другое решение, но неt вызвать mapbinder.addBinding, он связывается и работает просто отлично) ...

1) No implementation for java.util.Map was bound.

Нужно ли использовать инъекцию конструктора, чтобы это работало как их пример? Я нахожусь в абстрактном классе, так что было бы очень неудобно менять 10 классов :(.

спасибо, Дин

Ответы на вопрос(2)

Ваш ответ на вопрос