У меня есть этот кинжальный модуль. Я хочу понять сгенерированный код, поэтому я могу проверить, что моя конфигурация кинжала оптимальна.
@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()
? Нельзя ли позвонить другому?
(Кстати, я понимаю, что мне больше не нужно связывать шрифты в моих активах приложения. Это не вопрос здесь.)