我正在尝试使用Guice将地图注入一个类,其中地图的格式为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需要一个类的实例。
我知道我可以切换地图中对象的顺序,但是整数值不是唯一的,所以我最终会得到一个整数的地图 - &gt;列表,这是相当丑陋的。有人有什么想法吗?
答案 0 :(得分:1)
MapBinder不适合你。映射是从静态键到提供的值,而不是相反。
或许对您尝试做的更具体的描述将有助于发现解决方案。
另外,请查看Multiset以将类型映射到整数。我不确定你是否在计算一个计数,但似乎它可能适合你想要做的事情。