Null safety — это функция языка Kotlin, которая предотвращает ошибки, связанные с null ссылками. Она достигается путем создания двух типов ссылок: nullable (допускающие null) и non-nullable (не допускающие null).
Non-nullable типы объявляются как обычно:
kotlin
Nullable типы объявляются с использованием символа ? после имени типа:
kotlin
Kotlin требует явной обработки nullable типов, предотвращая прямое обращение к их членам без предварительной проверки на null. Для этого предоставляются следующие механизмы:
Оператор безопасного вызова (?.): Вызывает метод или обращается к свойству только в том случае, если объект не null. В противном случае возвращает null.
kotlin
Оператор Elvis (?:): Предоставляет значение по умолчанию, если выражение слева от оператора null.
kotlin
Оператор not-null assertion (!!): Преобразует nullable тип в non-nullable. Если значение null, выбрасывается NullPointerException. Используется, когда разработчик уверен, что значение не null.
kotlin
if-проверки: Традиционная проверка на null с помощью if. Компилятор smart casts (умно приводит) nullable тип к non-nullable внутри блока if, если проверка на null прошла.
kotlin
Эти механизмы позволяют явно управлять ситуациями, когда переменная может быть null, что значительно снижает вероятность возникновения NullPointerException во время выполнения программы.