2015-05-29 61 views
1

我目前正在嘗試添加由Map<? extends CustomModule, CustomModule>(來自附加的自定義模塊系統)組成的映射的條目作爲guice模塊中的綁定。將類的映射綁定到guice模塊內的實例

到目前爲止我的代碼看起來是這樣的:

manager.getRegistry().forEach(new BiConsumer<Class<? extends CustomModule>, ModuleRegistry.Entry>() { 
    @Override 
    public void accept(Class<? extends CustomModule> moduleClass, ModuleRegistry.Entry entry) { 
     bind(moduleClass).to(entry.getModule()); // getModule() returns the instance which implements moduleClass 
    } 
}); 

吉斯黯然需要直接類,而不是一個通配符(「擴展?」)。 由於我已經得到了「綁定」,是否有另一種方法將它們添加到注入器?

在此先感謝!

回答

0

所以在嘗試了其他各種可能的方法後,我終於找到了一個可行的方法。 由於最初的問題是,Guice需要「捕獲」某些東西(在這種情況下,「捕獲?擴展模塊實例」,基本上意味着某個東西是模塊的一個實例)並且失敗了,所以我不得不施放我的已知模塊類的原始類型,比如:

final Class moduleClass = (Class) aClass; 
final Binding binding = injector.getExistingBinding(Key.get(moduleClass)); 
if (binding == null) { 
    bind(moduleClass).toInstance(entry.getModule()); 
} 

我也只好在我的情況下添加一個空檢查,但它也包括怎樣的方式來投你未知的類吉斯的「鑰匙」的幫手。