【问题标题】:Dagger 2 Named Set InjectionDagger 2 命名集注入
【发布时间】:2015-06-15 09:25:28
【问题描述】:

我有一个注入点:

public class Receiver {
  private final Set<Sender> senders;

  @Inject
  public Receiver(@Named("Test") Set<Sender> senders){
     this.senders = senders;
  }
}

此外,我有这个模块提供依赖:

@Module
public class MyModule {
  @Provides(type = Provides.Type.SET)
  @Singleton
  @Named("Test")
  public Sender provideSender(){
     return new SpecificSender();
  }
}

但 dagger 2 APT 无法创建适当的类。我从 APT 得到这个异常:

Caused by: java.lang.UnsupportedOperationException
at dagger.internal.codegen.KeyVariableNamer.apply(KeyVariableNamer.java:44)

有人有同样的问题吗?有没有好的解决方法?

如果我删除 Named 注释,它确实有效。 我正在使用 Dagger 2.0

谢谢

【问题讨论】:

  • 如果我使用限定符注解,该机制会起作用。但是,我认为它也应该与 @Named 注释一起使用
  • 乍一看 Dagger2 编译器代码,这似乎是一个边缘情况,目前是一个错误,它旁边甚至有一个 TODO: 注释。
  • 你可能想open an issue

标签: dagger-2


【解决方案1】:

这已在内部修复,但尚未同步到 github。

【讨论】:

  • 这只是在 Dagger 2.0.2 上发生在我身上。关于何时发布此修复程序的任何消息?
  • @nicopico 这也发生在我身上。我已经填写了一个问题,如果你想关注它,这里是链接:github.com/google/dagger/issues/343
  • Dagger 2.1 已经发布 BTW;您是否检查过该版本是否已修复?
猜你喜欢
  • 2015-08-05
  • 2022-09-30
  • 2018-06-13
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多