gpt4 book ai didi

java - Dagger 中的字段注入(inject)和构造函数注入(inject)之间的区别

转载 作者:行者123 更新时间:2023-11-29 23:26:59 25 4
gpt4 key购买 nike

您好,我有一个非常简单的 android Dagger 问题。

class Fooz {
@Inject Foo1 mFoo1;
public Fooz() {
....
}
}

class Fooz {
private Foo1 mFoo1;

@Inject public Fooz(Foo1 foo1) {
mFoo1 = foo1;
}
}

这两个类有何相同之处?第一个直接注入(inject) Foo1 字段,而第二个在构造函数中分配 mFoo1。对于第二个,Foo1 是否在 Fooz 创建并添加到对象图中后立即从对象图中注入(inject)?如果它们不同,为什么会这样?谢谢!

最佳答案

构造函数注入(inject)使您可以更好地控制对象实例化,因为使用字段注入(inject)意味着将您的类创建限制为反射并依赖对这些特定注入(inject)注释的支持。除此之外,清楚地了解构造函数的依赖关系让代码更易于维护和测试。

据我所知,它在 Dagger 图上的保存方式没有区别,但构造函数调用总是比注入(inject)字段快。

在我看来,只有当我们无法控制对象创建时才应该使用属性,例如在 ActivitiesFragments 中。

关于java - Dagger 中的字段注入(inject)和构造函数注入(inject)之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53397756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com