我正在尝试使用 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/