Ответ
Kotlin имеет строгую статическую типизацию с выведением типов (type inference). Основные особенности:
- Null-safety встроена в систему типов:
String(non-null) vsString?(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> // контравариантный