Можно ли Deferred преобразовать к Job

«Можно ли Deferred преобразовать к Job» — вопрос из категории Coroutines и Flow, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, можно. Deferred — это интерфейс, расширяющий Job, поэтому его можно привести к Job напрямую. Это полезно, если нужно управлять жизненным циклом задачи (отмена, ожидание завершения) без доступа к результату.

Пример:

val deferred = async { someLongRunningTask() }
val job: Job = deferred // Неявное приведение
job.cancel() // Отмена задачи

Однако, после приведения теряется доступ к await() и результату.