Объясните, что такое null safety в языке Kotlin.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Null safety — это функция языка Kotlin, которая предотвращает ошибки, связанные с null ссылками. Она достигается путем создания двух типов ссылок: nullable (допускающие null) и non-nullable (не допускающие null).
Non-nullable типы объявляются как обычно:
var nonNullableString: String = "Hello" // Не может быть null
Nullable типы объявляются с использованием символа ? после имени типа:
var nullableString: String? = "Hello" // Может быть null
nullableString = null
Kotlin требует явной обработки nullable типов, предотвращая прямое обращение к их членам без предварительной проверки на null. Для этого предоставляются следующие механизмы:
-
Оператор безопасного вызова (
?.): Вызывает метод или обращается к свойству только в том случае, если объект неnull. В противном случае возвращаетnull.val length = nullableString?.length // length будет Int? или null -
Оператор Elvis (
?:): Предоставляет значение по умолчанию, если выражение слева от оператораnull.val nonNullLength = nullableString?.length ?: 0 // nonNullLength будет Int, 0 если nullableString null -
Оператор not-null assertion (
!!): Преобразует nullable тип в non-nullable. Если значениеnull, выбрасываетсяNullPointerException. Используется, когда разработчик уверен, что значение неnull.val sureLength = nullableString!!.length // Выбросит NullPointerException если nullableString null -
if-проверки: Традиционная проверка на
nullс помощьюif. Компилятор smart casts (умно приводит) nullable тип к non-nullable внутри блокаif, если проверка наnullпрошла.if (nullableString != null) { val length = nullableString.length // Здесь nullableString рассматривается как String }
Эти механизмы позволяют явно управлять ситуациями, когда переменная может быть null, что значительно снижает вероятность возникновения NullPointerException во время выполнения программы.