我正在尝试使用Guice将Map插入类中,其中Map的形式为Map<MyInterface, Integer>
。
我想使用MapBinder
扩展名来完成此操作,但似乎MapBinder需要键的实例化对象。我想让Guice注入键的实例化,因为它们是需要自己注入的复杂对象。即,类似:
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将类型映射到整数。我不确定您是否要对计数建模,但似乎它可能适合您要执行的操作。