我有一些看似如下的多绑定代码:
bind(SuperClass.class).annotatedWith(Names.named("Name1"))
.to(SubClass1.class).in(Scopes.SINGLETON);
bind(SuperClass.class).annotatedWith(Names.named("Name2"))
.to(SubClass2.class).in(Scopes.SINGLETON);
...another 20 lines of this stuff
我也有一些看起来像这样的代码:
multiBinder.addBinding().to(SomeClass1.class)
.in(Scopes.SINGLETON);
multiBinder.addBinding().to(SomeClass2.class)
.in(Scopes.SINGLETON);
...another 20 lines of this stuff too
Guice有没有办法用更少的行/更少的重复次数来做这件事?
编辑:不寻找像“使用for循环并迭代一组键”这样的答案。
答案 0 :(得分:3)
您可以稍微扩展DSL。
mySpecialBinding("Name1", SubClass1.class);
mySpecialBinding("Name2", SubClass2.class);
// ...
void mySpecialBinding(String name, Class<? extends SuperClass> clazz) {
bind(SuperClass.class).annotatedWith(Names.named(name))
.to(clazz).in(Scopes.SINGLETON);
multiBinder.addBinding().to(clazz)
.in(Scopes.SINGLETON);
}