我见过它,但我不确定这些用法是不是很好的用例。您是否有Guice Mapbinder 惯用用法的示例? (Mapbinder确实是解决问题的正确工具)
答案 0 :(得分:3)
另外,它看起来像是一种合理的方法来创建一个通用接口的运行时命名实现的注册表。考虑从命令行或配置文件中选择许多插件/模式之一:在编译时无法知道所需的注入。 MapBinder提供了一种简单的运行时查找,无需借助类型切换。
答案 1 :(得分:1)
我在Guts-GUI中广泛使用它。
您可以查看ResourceModule
,其中用于映射给定类型ResourceConverter<T>
的右T
:
Map<TypeLiteral<?>>, ResourceConverter<?>>
MapBinder
直接在Resources
助手类中创建。
这样,任何模块都可以为自己的类型添加自己的资源转换器,例如: MessageModule
添加了自己的转换器。
我还在Map<Integer, WindowProcessor>>
中将其用作WindowsModule
,以便将一个接一个地应用的WindowProcessor
的有序列表定义到新创建的窗口中。
再一次,这允许各种模块将自己的处理器插入到应用于每个窗口的列表中:ResourceModule
使用它来添加向Windows自动注入i18n资源的能力。