java - 将 key 注入(inject)MapBinder

标签 java guice

我正在尝试使用 Guice 将 map 注入(inject)到类中,其中 map 的形式为 Map<MyInterface, Integer> .

我想使用MapBinder扩展来完成此任务,但似乎 MapBinder 需要一个实例化的对象作为键。我想让 Guice 注入(inject) key 的实例,因为它们是复杂的对象,需要自己的注入(inject)。即,类似:

MapBinder<MyInterface, Integer> mapBinder = 
    MapBinder.newMapBinder(binder(), MyInterface.class, Integer.class);
mapBinder.addBinding(MyInterfaceImpl1.class).to(5);
mapBinder.addBinding(MyInterfaceImpl2.class).to(6);

但是这是非法的,因为 addBinding 需要该类的实例。

我知道我可以切换映射中对象的顺序,但是整数值不是唯一的,所以我最终会得到一个整数映射 -> 列表,这相当难看。大家有什么想法吗?

最佳答案

MapBinder 不会为你工作。映射是从静态键到提供的值,而不是相反。

也许对您正在尝试做的事情进行更具体的描述将有助于找到解决方案。

此外,请查看 Multiset用于将类型映射到整数。我不确定您是否正在对计数进行建模,但它似乎可能适合您想要做的事情。

关于java - 将 key 注入(inject)MapBinder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3729607/

相关文章:

java - 如何在执行时设置文件变量名

java - 运行 JUnit 测试时出错(JPA、Derby、Hibernate、Guice)

java - 从 war 文件提供文件

java - guice 辅助注入(inject) + 多绑定(bind) + 泛型

java - 空参数检查、断言或异常哪个更好?

java - main 方法中的同步块(synchronized block)

java - 单击 Eclipse 中的“完成”按钮后,项目将无法导入

java - 如何从 PersistentSet 中获取可能为空的元素类型

java - 我应该如何通过 Struts 操作连接和使用我的核心类?

java - Guice:场注入(inject)的影响