Я прочитал следующий вопрос:
Назначение 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 *