注入一个[MapBinder](https://google.github.io/guice/api-
docs/latest/javadoc/index.html?com/google/inject/multibindings/MapBinder.html)。
在您的模块中,将绑定加载到中
MapBinder,然后使您的运行时参数也可注入。本示例基于文档中的示例:
public class SnacksModule extends AbstractModule { protected void configure() { MapBinder<String, Snack> mapbinder= MapBinder.newMapBinder(binder(), String.class, Snack.class); mapbinder.addBinding("twix").to(Twix.class); mapbinder.addBinding("snickers").to(Snickers.class); mapbinder.addBinding("skittles").to(Skittles.class); }}然后,在您的对象中注入
Map和参数。对于此示例,我假设您已
java.util.Properties为运行时参数绑定了:
@Injectpublic MyObject(Map<String, Provider<Snack>> snackProviderMap, Properties properties) { String snackType = (String) properties.get("snackType"); Provider<Snack> = snackProviderMap.get(property); // etc.}注意,使用相同的方法,
MapBinder您可以注入simple
Map<String, Snack>或
Map<String,Provider<Snack>>; Guice将两者绑定。



