Какие особенности использования Nothing в Generic

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

Ответ

Nothing в Kotlin — это подтип всех типов, но сам по себе не имеет экземпляров. В дженериках он полезен для:

  1. Обозначения отсутствия значения (например, List<Nothing> — пустой список, который нельзя заполнить).
  2. Запрета вызова методов (если функция возвращает T : Nothing, она никогда не завершится нормально).

Пример:

fun fail(message: String): Nothing = throw IllegalStateException(message)

fun example(): String {
    val result: String? = null
    return result ?: fail("Result is null") // Тип вывода — String, т.к. `fail` не возвращает управление
}

Важно: Nothing? (nullable вариант) может содержать только null.