Какие знаешь особенности системы типов в Kotlin

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

Ответ

Kotlin имеет строгую статическую типизацию с выведением типов (type inference). Основные особенности:

  • Null-safety встроена в систему типов: String (non-null) vs String? (nullable)
  • Умное приведение типов (smart casts):
if (x is String) {
    println(x.length) // x автоматически приведен к String
}
  • Все типы - объекты (нет примитивов как в Java)
  • Any - аналог Object (корень иерархии)
  • Unit - аналог void, но является реальным типом
  • Nothing - тип для функций, которые никогда не завершаются (бросают исключение)
  • Ковариантность/контравариантность через out и in:
interface Producer<out T> // ковариантный
interface Consumer<in T> // контравариантный