匕首编译中的意外键

时间:2013-04-22 20:01:14

标签: dependency-injection dagger

我从匕首得到以下错误:

[ERROR] error on execute: java.lang.IllegalArgumentException: Unexpected key: ca.nanometrics.apollo.instrument.configuration.ResourceOwnerController<>

我相信这是因为我有一个没有可注入依赖项的类 - 它有一个空的公共构造函数(带@Inject),没有任何东西可以注入成员。我这样做是为了不必为它声明@Provides。请注意,带有@Inject的类是上面错误消息中列出的类的子类:

public class ResourceOwnerControllerHelios extends ResourceOwnerController<ResourceOwnerFactoryHelios>
{

  @Inject
  public ResourceOwnerControllerHelios()
  {
    // do nothing
  }

这是匕首中的错误,还是我缺少的东西?

如果我删除@Inject但仍然没有将@Provides添加到模块中,它当然根本不起作用,因为dagger需要所有依赖项的@Inject或@Provides。

1 个答案:

答案 0 :(得分:2)

Oi - 这看起来像是“碰到了对通用设备的误操作”。 :/可能在github上提出问题。你正在做什么应该工作 - 也就是说,将@Inject添加到一个no-args公共构造函数中。我相信Dagger正试图爬上继承层次结构而不是处理父类中的泛型。我们应该处理这个案子。