> Что такое тип Nothing в Kotlin и чем он отличается от Unit (Kotlin, Android)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: MTS, Dogma, TrendTech, Астра

Стек: Kotlin, Android

> Пример ответа

Nothing - это специальный тип в Kotlin, который обозначает "значение, которое никогда не существует". Он используется для указания того, что функция никогда не завершится нормально (например, всегда выбрасывает исключение или входит в бесконечный цикл). Тип Nothing является подтипом всех типов (включая Unit и пользовательские классы), что позволяет использовать его в местах, где ожидается любой тип, например, в throw Exception() или в ветке else в when, если все остальные ветки уже обработаны.

Unit - это тип, аналогичный void в Java, но с одним важным отличием: Unit - это полноценный объект с единственным экземпляром (синглтоном). Функции, возвращающие Unit, всегда завершаются нормально и возвращают значение Unit (которое обычно не используется). Unit не является подтипом других типов.

Основные отличия:

  • Nothing никогда не создаёт экземпляра; Unit имеет ровно один экземпляр.
  • Функция с возвращаемым типом Nothing никогда не завершается; функция с Unit всегда завершается.
  • Nothing - это "нижний тип" (bottom type), подтип всего; Unit - обычный тип, не являющийся подтипом других типов.

Пример:

fun fail(): Nothing = throw RuntimeException() // никогда не вернёт значение
fun doSomething(): Unit = println("Done") // всегда возвращает Unit

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью