← На главную

Kotlin: smart-casting, корутины и null safety

17.07.2026 12:50 · hackernews

Язык поддерживает классы и объекты с наследованием через open и override, интерфейсы с методами по умолчанию, а также data class с автоматической генерацией equals, hashCode и copy. Есть enum, именованные, сопутствующие (companion) и анонимные объекты.

sealed иерархии дают исчерпывающий when. Проверки is компилируются в инструкцию ref.test. Умное приведение типов (smart-casting) работает во всех ветках и сохраняется после проверок.

Null safety сквозной: тип помечается ?., безопасный вызов — через ?., элвис-оператор ?:, утверждение !!. Nullable примитивы упаковываются через Any.

Обобщения: параметры типа у функций и классов (fun <T> id(x: T): T) реализованы через бокс в Any.

Перегрузка операторов (plus, get и другие) диспетчеризуется по классу левого операнда. Расширения (extension functions) находятся в собственном пространстве имён. Кастомные аксессоры используют backing field.

Корутины неблокирующие: launch, delay, coroutineScope. Реальная приостановка компилируется в CPS через замыкания — без Asyncify, JSPI и потоков.

Стандартная библиотека включает рукописные операции над String и Char, функции высшего порядка для списков (map, filter, forEach, …), пакет kotlin.math и функции области видимости: let, apply, run, also, with.

Читать оригинал →