Кинжал 2 - Какова цель методов proxyProvide? - PullRequest
1 голос
/ 09 марта 2019

Я прочитал следующий вопрос: Назначение proxyProvide в сгенерированном коде Dagger 2

Однако в принятом ответе говорится, что цель этого метода - сделать его общедоступным:

Дело в том, что метод обеспечения может быть недоступен из того же пакета, что и ваш компонент, поэтому мы генерируем этот «прокси» метод, который дает 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? 1021 *

...