Я пытаюсь ввести разные версии одного и того же родового типа, до сих пор не повезло. Связки, которые я делаю в AbstractModule реализации являются:Ввод аннотированных родовых классов с помощью Guice
bind(new TypeLiteral<ConcurrentHashMap<String, Integer>>() {
}).annotatedWith(Names.named("name0")).toProvider(
ConcurrentHashMap::new).in(Singleton.class);
bind(new TypeLiteral<ConcurrentHashMap<String, Long>>() {
}).annotatedWith(Names.named("name1")).toProvider(
ConcurrentHashMap::new).in(Singleton.class);
bind(new TypeLiteral<ConcurrentHashMap<String, Boolean>>() {
}).annotatedWith(Names.named("name2")).toProvider(
ConcurrentHashMap::new).in(Singleton.class);
bind(new TypeLiteral<ConcurrentHashMap<String, Short>>() {
}).annotatedWith(Names.named("name3")).toProvider(
ConcurrentHashMap::new).in(Singleton.class);
Я попытался инъекционного их просто с помощью:
@Inject @Named("name0") ConcurrentHashMap<String, Integer>;
и так далее. Однако я получаю следующую ошибку:
1) Unable to create binding for
java.util.concurrent.ConcurrentHashMap<java.lang.String, java.lang.Integer>
annotated with @com.google.inject.name.Named(value=name0). It was already configured on one or more child injectors or private modules
Что я делаю неправильно? Благодаря!
Это выглядит хорошо для меня , вы можете попытаться [редактировать], чтобы опубликовать более полную [mcve], пожалуйста? – durron597