目前,我的 Guice 模块有一些冗余,看起来有点像这样:
public GuiceModule extends AbstractModule {
@Provides
@Named("Thing1")
String Thing1Provider() {
return someFunction("Thing1");
}
@Provides
@Named("Thing2")
String Thing2Provider() {
return someFunction("Thing2");
}
.......
@Provides
@Named("Thing5")
String Thing5Provider() {
return someFunction("Thing5");
}
}
显然,这非常不方便。我该如何避免这种情况?
最佳答案
List<String> names = ...;
for (String name : names) {
bind(String.class)
.annotatedWith(Names.named(name))
.toProvider(() -> doSomething(name));
}
但正如评论所建议的,我会考虑使用 MapBinder
,或者在需要时直接调用 doSomething
,而不是使用 @Named
无处不在。
关于java - Guice:如何避免模块冗余,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38424532/