【问题标题】:Creating objects in Dagger在 Dagger 中创建对象
【发布时间】:2021-06-04 18:36:27
【问题描述】:

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

在 Guice 中,这很简单:

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

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

然后我想知道,是否有办法获取对象的实例而无需每次都制作组件?

【问题讨论】:

    标签: java dependency-injection dagger-2


    【解决方案1】:

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

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

    【讨论】:

    • 有道理,我想知道为什么我找不到这样的东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多