Dagger 2-proxyProvide方法的目的是什么?

时间:2019-03-09 11:10:53

标签: dependency-injection dagger-2 dagger

我已阅读以下问题: 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方法走弯的原因是什么?

0 个答案:

没有答案