在我的纳米项目中,我决定用命令地图代替大讨厌的开关语句。现在,我正在汇报我的代码,我想创建提供填充地图的提供商。
我想知道,这将是什么最佳实践。最初,我在考虑这样的事情:
@Provides
ActionResolver provideActionResolver(Dependency dep1,Dependency dep2) {
Map<SomeEnum,Action> map = new HashMap<>();
map.put(SomeEnum.A1,new Action1(dep1);
map.put(SomeEnum.A2,new Action2(dep2);
return new ActionResolver(map);
}
我想知道这是正确的方法,这是什么最佳做法。
带有 MAP MULTIBINDINGS ,如果我正确,则可以执行以下操作:
@MapKey
@interface SomeEnumKey {
SomeEnum value();
}
@Provides
@IntoMap
@SomeEnumKey(SomeEnum.A1)
Action action1(@Named("dep1") Dependency dep1) {
return new Action1(dep1);
}
@Provides
@IntoMap
@SomeEnumKey(SomeEnum.A2)
Action action2(@Named("dep2") Dependency dep2) {
return new Action2(dep2);
}
@Provides
ActionResolver provideActionResolver(Map<SomeEnum, Action> actions) {
return new ActionResolver(actions);
}