1

我有一些看起来像这样的多重绑定代码:

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 循环并迭代一组键”之类的答案。

4

1 回答 1

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);
}
于 2013-07-12T16:16:49.147 回答