Ответ
Аннотация @Provides в Dagger имеет несколько ограничений:
- Метод должен быть
abstractилиstatic— если модуль абстрактный, метод может быть абстрактным, иначе — только статическим. - Нельзя использовать параметры — если метод
@Providesтребует зависимость, её нужно указать через@Bindsили внедрить через конструктор модуля. - Нельзя использовать
@Inject—@Providesзаменяет@Injectдля предоставления зависимостей.
Пример:
@Module
abstract class AppModule {
@Binds
abstract fun bindRepository(impl: RepositoryImpl): Repository
companion object {
@Provides
fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder().build()
}
}