В чем разница между Unit и Nothing

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

Ответ

Unit и Nothing в Kotlin — это специальные типы, но с разным назначением:

  • Unit — аналог void в Java. Используется, когда функция не возвращает значимого значения. По сути, Unit — это синглтон с единственным значением Unit.
    Пример:
fun log(message: String): Unit { 
    println(message)
    // return Unit не требуется (подразумевается)
}
  • Nothing — тип, обозначающий "никогда не завершается". Используется для функций, которые всегда выбрасывают исключение или бесконечно работают (например, fail() или бесконечный цикл).
    Пример:
fun fail(): Nothing {
    throw RuntimeException("Error")
}

Ключевое отличие:
Unit означает "нет полезного результата", а Nothing — "этот код никогда не вернёт управление".