我正在尝试使用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将类型映射到整数。我不确定您是否要对计数建模,但似乎它可能适合您要执行的操作。

10-08 02:32