У меня есть этот кинжальный модуль. Я хочу понять сгенерированный код, поэтому я могу проверить, что моя конфигурация кинжала оптимальна.
@Module
public class TypefaceModule {
    @Provides @Singleton @Named("Roboto Light")
    static Typeface provideRobotoLight(AssetManager assets) {
        return Typeface.createFromAsset(assets, "fonts/Roboto-Light.ttf");
    }
}
Здесь сгенерированный код (Dagger 2.14.1):
public final class TypefaceModule_ProvideRobotoLightFactory implements Factory<Typeface> {
  private final Provider<AssetManager> assetsProvider;
  public TypefaceModule_ProvideRobotoLightFactory(Provider<AssetManager> assetsProvider) {
    this.assetsProvider = assetsProvider;
  }
  @Override
  public Typeface get() {
    return Preconditions.checkNotNull(
        TypefaceModule.provideRobotoLight(assetsProvider.get()),
        "Cannot return null from a [email protected] @Provides method");
  }
  public static TypefaceModule_ProvideRobotoLightFactory create(
      Provider<AssetManager> assetsProvider) {
    return new TypefaceModule_ProvideRobotoLightFactory(assetsProvider);
  }
  public static Typeface proxyProvideRobotoLight(AssetManager assets) {
    return Preconditions.checkNotNull(
        TypefaceModule.provideRobotoLight(assets),
        "Cannot return null from a [email protected] @Provides method");
  }
}
Существуют две функции, которые выполняют почти одно и то же: метод экземпляра get() и статический метод proxyProvideRobotoLight().
Почему Dagger сгенерировал две версии этого кода, которые статически называют метод provide() модуля provide()? Нельзя ли позвонить другому?
(Кстати, я понимаю, что мне больше не нужно связывать шрифты в моих активах приложения. Это не вопрос здесь.)
