1

我从匕首收到以下错误:

[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。

4

1 回答 1

2

Oi - 这看起来像是碰到了对泛型的错误处理。:/ 也许在 github 上提出问题。您正在做的事情应该有效 - 即将 @Inject 添加到无参数公共构造函数中。我相信 Dagger 正在尝试爬上继承层次结构,而不是处理父级中的泛型。我们应该处理这个案子。

于 2013-04-22T20:30:25.130 回答