在 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 路径)生成代码。所以这将是完全低效的(或者对于复杂的对象来说是不可能的)
我正在尝试学习 Dagger,但我不明白如何在不为其编写组件的情况下实际获取 class 的实例。
在 Guice 中,这很简单:
final InterfaceA a = injector.getInstance(InterfaceA.class);
但据我了解,在 Dagger 中我可以为 InterfaceA
创建一个组件,这样我就可以调用 DaggerInterfaceA.a().
那么我想知道,是否有一种方法可以获取对象的实例而不需要每次都创建一个组件?
Guice 使用反射,因此他能够在运行时构建对象并且在运行时完成图形依赖。
Dagger 使用代码生成,因此在构建应用程序时构建图形依赖项。 此代码生成将仅针对 cleary 声明的组件完成,否则 dagger 将不得不为您项目的所有 class(甚至您的 class 路径)生成代码。所以这将是完全低效的(或者对于复杂的对象来说是不可能的)