如何在匕首中为地图创建值

  • 本文关键字:地图 创建 java dagger
  • 更新时间 :
  • 英文 :


在我的纳米项目中,我决定用命令地图代替大讨厌的开关语句。现在,我正在汇报我的代码,我想创建提供填充地图的提供商。

我想知道,这将是什么最佳实践。最初,我在考虑这样的事情:

@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);
}

最新更新