В чем разница между системой типов в Java и Kotlin

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

Ответ

Kotlin предлагает более продвинутую систему типов по сравнению с Java:

  1. Null-безопасность - в Kotlin типы по умолчанию non-null (String), nullable обозначаются ? (String?). В Java все типы nullable.

  2. Умные приведения - Kotlin автоматически приводит типы после проверки:

if (obj is String) {
    println(obj.length) // автоматическое приведение к String
}
  1. Any vs Object - Kotlin использует Any как аналог Object, но без методов wait()/notify().

  2. Unit vs void - Kotlin использует Unit вместо void, при этом Unit - это реальный объект.

  3. Nothing - специальный тип в Kotlin для функций, которые никогда не завершаются (например, бросают исключение).

  4. Ковариантность/контравариантность - в Kotlin проще работать с дженериками благодаря модификаторам out и in.