在 Dagger 中创建对象

Creating objects in Dagger

我正在尝试学习 Dagger,但我不明白如何在不为其编写组件的情况下实际获取 class 的实例。

在 Guice 中,这很简单:

final InterfaceA a = injector.getInstance(InterfaceA.class);

但据我了解,在 Dagger 中我可以为 InterfaceA 创建一个组件,这样我就可以调用 DaggerInterfaceA.a().

那么我想知道,是否有一种方法可以获取对象的实例而不需要每次都创建一个组件?

Guice 使用反射,因此他能够在运行时构建对象并且在运行时完成图形依赖。

Dagger 使用代码生成,因此在构建应用程序时构建图形依赖项。 此代码生成将仅针对 cleary 声明的组件完成,否则 dagger 将不得不为您项目的所有 class(甚至您的 class 路径)生成代码。所以这将是完全低效的(或者对于复杂的对象来说是不可能的)