Почему Nothing можно использовать как любой класс

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

Ответ

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

fun fail(message: String): Nothing {
    throw IllegalArgumentException(message)
}

Поскольку Nothing является подтипом всех других типов (включая nullable), его можно использовать везде:

  • В T? (Nothing? == null)
  • В generic-параметрах (List<Nothing> — пустой список)
  • В ветвях when/if, которые не возвращают значение

Это полезно для:

  • Функций, которые всегда падают (throw)
  • Пустых коллекций (emptyList() возвращает List<Nothing>)
  • Завершения корутин (suspendCoroutine<Nothing>)