首页 > 解决方案 > Dagger 2 - proxyProvide 方法的目的是什么?

问题描述

我已阅读以下问题: 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那么这种绕道而行的方法是什么原因呢?

标签: dependency-injectiondagger-2dagger

解决方案


推荐阅读