Sobes.tech
Назад к вопросам
Junior — Middle
72

Объясните назначение и работу аннотации @Binds в контексте Dependency Injection.

Компании, где спрашивали
Willdberies

Ответ от нейросети

sobes.tech AI

Аннотация @Binds используется в Dagger (Dependency Injection) для связывания интерфейса с его реализацией без необходимости писать фабричные методы.

Она применяется в абстрактных модулях и позволяет указать, что при запросе зависимости интерфейса нужно предоставить конкретную реализацию.

Пример:

@Module
abstract class NetworkModule {
    @Binds
    abstract ApiService bindApiService(ApiServiceImpl impl);
}

Здесь ApiService — интерфейс, а ApiServiceImpl — его реализация. Dagger автоматически создаст биндинг, чтобы при запросе ApiService предоставить ApiServiceImpl.

Это упрощает код, делает его более читаемым и избавляет от необходимости писать методы с @Provides, если реализация уже есть.