Ezi*_*iki 10 android dependency-injection dagger-2
它说,在Dagger2的文档中
如果您的类具有@Inject-annotated字段但没有@Inject-annotated构造函数,则Dagger将在请求时注入这些字段,但不会创建新实例.添加带有@Inject批注的无参构造函数,以指示Dagger也可以创建实例.
它如何注入字段但不创建新实例?有什么不同?
Ogn*_*yan 10
"如果请求"表示"如果手动注入",即对象由您或某个框架创建(想想Android和Activities对象),然后调用'DaggerMyComponent.inject(myObject);'.
另一方面,当您提供@Inject注释构造函数时,Dagger将能够实例化此类本身的对象,因此您的类可能位于依赖图的中间,并且Dagger将自动为您创建对象.
通常在Android中,您只能手动注入由android创建/销毁的对象(即您不控制其生命周期),如应用程序,活动,服务等.
如果您不小心错过@Inject某些类的构造函数上的注释,您也不必担心.如果你的类是图形的中间部分,Dagger会发现存在不满足的依赖关系,并且会在编译失败时出现相应的错误.