将键注入MapBinder

时间:2010-09-16 18:26:42

标签: java guice

我正在尝试使用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;列表,这是相当丑陋的。有人有什么想法吗?

1 个答案:

答案 0 :(得分:1)

MapBinder不适合你。映射是从静态键到提供的值,而不是相反。

或许对您尝试做的更具体的描述将有助于发现解决方案。

另外,请查看Multiset以将类型映射到整数。我不确定你是否在计算一个计数,但似乎它可能适合你想要做的事情。