Ответ
В Kotlin Nothing — это специальный тип, который не имеет значений (экземпляров). Он используется для обозначения ситуаций, которые никогда не завершаются нормально (например, бесконечный цикл или исключение).
fun fail(): Nothing {
throw RuntimeException("Error")
}
Поскольку Nothing не может быть инстанциирован, количество его инстансов равно 0. Это тип, который сигнализирует о невозможности возврата значения.
Ответ 18+ 🔞
А, слушай, вот про этот Nothing в Kotlin — это вообще отдельная песня, ёпта. Представь себе тип, который как обещание, что ничего не вернётся. Вообще. Ни хуя. Ноль экземпляров. Полный пиздец и точка.
Это как если бы ты позвал друга помочь с переездом, а он тебе говорит: "Я приду, только вот никогда". Вот это и есть Nothing. Функция, которая объявлена как возвращающая Nothing, — это чистый обман, она тебя просто посылает нахуй, выбрасывая исключение или впадая в бесконечный цикл. Возврата оттуда нет, чувак. Ты в эту дверь зашёл — и всё, приехали.
Вот смотри на этот код, тут всё понятно:
fun fail(): Nothing {
throw RuntimeException("Error")
}
Объясняю на пальцах: ты вызываешь fail(), надеясь получить хоть что-то, а тебе в ответ — бац! — исключение прямо в ебало. RuntimeException. И компилятор-то умный, он это видит и говорит: "Окей, раз функция объявлена как Nothing, значит, после её вызова дальше код не пойдёт, можно не париться". Это ж хитрая жопа, но очень удобная.
И да, количество его инстансов — 0. Это не null, это даже не пустой список. Это вакуум, ёбаный насос выкачал всё до последней молекулы. Nothing — это как чёрная дыра в системе типов: всё, что в неё попадает, исчезает навсегда, и доверия к ней — ноль ебать.
Используют его, чтобы явно сказать: "Э, сабака сука, тут путь заканчивается, дальше только боль и страдания". Компилятор это схавает и поможет тебе с анализом потока управления. Красота, да и только. Пизда рулю, как говорится.