嗨,我正在尝试在模块中按以下方式构造列表,以后可以将其注入到任何类中并在同一模块中使用,如下所示:
public class MyConfigModule extends AbstractModule{
@Override
protected void configure() {
Multibinder<String> myList =
Multibinder.newSetBinder(binder(), String.class, Names.named("MyList"));
myList.addBinding().toInstance("Test1");
MapBinder<String, IManager> myMap = MapBinder
.newMapBinder(binder(), String.class, IManager.class,
Names.named("ManagerMap"));
for(each item in the above myList) <--- cannot figure out how to do this i.e. iterating over a multibinder
myMap
.addBinding(item).to(MyManager.class).asEagerSingleton();
}
}
最佳答案
简短而令人失望的答案是:您不能。如果查看Multibinder的源代码,就会发现它只是将调用委派给RealMultibinder的实例。不幸的是,Multibinder
没有公开任何允许您访问RealMultibinder
内部数据的方法。即使这样做,也没有用,因为RealMultibinder
使用Binder的实现来管理绑定。我可以继续,但是我想你明白我的意思;)
因此,唯一的选择(并且我真的不建议这样做)是通过所有这些类来反映自己,直到您获得约束绑定的数据结构。