Sobes.tech
Назад к вопросам
Junior — Middle
69

Каким образом Kotlin обрабатывает значения, которые могут быть null, и какие механизмы предоставляет для этого?

Компании, где спрашивали
Центр Инвест Банк

Ответ от нейросети

sobes.tech AI

Kotlin имеет встроенную систему безопасности от null-значений, которая помогает избежать распространённой ошибки NullPointerException. В языке типы по умолчанию не могут содержать null. Чтобы переменная могла принимать null, её тип объявляется с помощью ?.

Пример:

var a: String = "Hello"  // не может быть null
var b: String? = null     // может быть null

Для работы с nullable типами Kotlin предоставляет несколько механизмов:

  • Безопасный вызов (?.) — позволяет вызвать метод или получить свойство, если объект не null, иначе возвращает null.

    val length = b?.length  // если b не null, вернёт длину, иначе null
    
  • Оператор Элвиса (?:) — возвращает значение слева, если оно не null, иначе значение справа.

    val length = b?.length ?: 0  // если b null, длина будет 0
    
  • Оператор not-null assertion (!!) — утверждает, что значение не null, и если это не так, выбрасывает исключение.

    val length = b!!.length  // если b null, будет исключение
    
  • Функции let, run, also и другие с безопасным вызовом для работы с nullable объектами.

Таким образом, Kotlin заставляет явно работать с null, снижая вероятность ошибок во время выполнения.