代码之家  ›  专栏  ›  技术社区  ›  Cheryl Simon

向MapBinder中插入键

  •  0
  • Cheryl Simon  · 技术社区  · 14 年前

    我正试图使用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需要类的实例。

    我知道我可以切换地图中对象的顺序,但是整数值不是唯一的,所以最后我会得到一个integer->列表的地图,这很难看。有人有什么想法吗?

    1 回复  |  直到 14 年前
        1
  •  1
  •   gk5885    14 年前

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

    也许更具体的描述一下你想做什么会有助于发现一个解决方案。

    另外,看看 Multiset 用于将类型映射到整数。我不确定你是否在为一个计数建模,但它似乎适合你正在做的事情。