Ответ
AssistedInject — это дополнение к Dagger, позволяющее внедрять зависимости в объекты, которые создаются не через Dagger напрямую (например, через фабрику или вручную).
Пример:
class MyService @AssistedInject constructor(
private val dependency: MyDependency,
@Assisted private val param: String
) {
@AssistedFactory
interface Factory {
fun create(param: String): MyService
}
}
Как использовать:
- Аннотируем параметры конструктора
@Assisted. - Создаем фабричный интерфейс с
@AssistedFactory. - Dagger сгенерирует реализацию фабрики, которую можно внедрить.
Плюсы:
- Удобно для объектов, требующих runtime-параметров.
- Сохраняет преимущества Dagger (проверка зависимостей на этапе компиляции).
Ограничения:
- Требует
dagger-assistedзависимости. - Не заменяет полную инъекцию зависимостей.