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

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

Ответ

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

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

  • Функций, которые всегда бросают исключение (throw).
  • Обобщённых функций, где нужно указать, что возврата нет.

Пример:

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

val result: String = fail("Error") // Корректно, т.к. функция никогда не вернёт значение