我已阅读以下问题: Purpose of proxyProvide in Dagger 2 generated code
但是,在那里接受的答案指出,此方法的目的是使其可公开访问:
问题是,不能从与您的组件相同的程序包中访问提供方法,因此我们生成了此“代理”方法,该方法为Dagger提供了正确的可访问性。
但是,如果@Provides
方法不是静态的,则模块实例在本地创建并与参数一起传递
在组件中:
private Engine getEngine() {
return DieselEngineModule_ProvideEngineFactory.proxyProvideEngine(
dieselEngineModule, getDieselEngine());
}
在工厂:
public static Engine proxyProvideEngine(DieselEngineModule instance, DieselEngine engine) {
return Preconditions.checkNotNull(
instance.provideEngine(engine), "Cannot return null from a non-@Nullable @Provides method");
}
两个参数都可以直接在组件中使用,因此目的不能是访问修饰符。
那么,为什么绕过proxyProvides
方法走弯的原因是什么?