2010-09-16 30 views
0

我正在嘗試使用Guice將映射注入到類中,其中地圖的格式爲Map<MyInterface, Integer>將注入鍵映射到MapBinder

我想使用MapBinder擴展來實現這一點,但似乎MapBinder需要一個實例化對象的密鑰。我想讓Guice注入關鍵的實例,因爲它們是需要自己注入的複雜對象。 I.e,類似於:

MapBinder<MyInterface, Integer> mapBinder = 
    MapBinder.newMapBinder(binder(), MyInterface.class, Integer.class); 
mapBinder.addBinding(MyInterfaceImpl1.class).to(5); 
mapBinder.addBinding(MyInterfaceImpl2.class).to(6); 

雖然這是違法的,因爲addBinding需要類的實例。

我知道我可以在地圖中切換對象的順序,但整數值不是唯一的,所以我最終得到了整數 - >列表的Map,這很醜陋。有人有主意嗎?

回答

1

MapBinder不會爲你工作。映射是從靜態鍵到提供的值,而不是其他方式。

也許你想要做的更具體的描述將有助於揭示解決方案。

此外,請看Multiset將類型映射到整數。我不確定你是否正在建模一個計數,但它看起來可能適合你想要做的事情。

+0

好的,謝謝。這就是我所設想的,但認爲值得檢查一下是否有人有另一個想法。我想我想出了一個適用於我的不同解決方案。 – 2010-09-17 00:56:03