Что такое 'nullable' типы в Kotlin и как они функционируют?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Nullable типы в Kotlin – это типы, которые могут содержать как значение, так и null. Они явно обозначаются символом ? после имени типа.
Функционирование основано на системе типов Kotlin, которая предотвращает NullPointerException во время компиляции. Компилятор требует явной проверки на null перед обращением к членам объекта nullable типа.
Основные способы безопасной работы с nullable типами:
-
Проверка на
nullс использованиемif:fun printLength(str: String?) { if (str != null) { println(str.length) // Безопасный вызов после null-проверки } else { println("Строка null") } } -
Оператор безопасного вызова (
?.): Возвращаетnull, если объектnull, иначе – результат вызова.val safeLength: Int? = str?.length // Если str null, safeLength будет null -
Оператор Элвиса (
?:): Позволяет предоставить значение по умолчанию в случае, если выражение слева от оператораnull.val lengthOrDefault: Int = str?.length ?: 0 // Если str null, lengthOrDefault будет 0 -
Оператор оператор явного не-null утверждения (
!!): Преобразует nullable тип в не-nullable. Следует использовать с осторожностью, так как выброситNullPointerException, если значение окажетсяnull.val assertedLength: Int = str!!.length // Выбросит NPE, если str null -
Функции let/run/apply/also с безопасным вызовом:
str?.let { // Код выполнится только если str не null println("Длина строки: ${it.length}") }
Система nullable типов Kotlin существенно повышает безопасность и уменьшает вероятность возникновения NullPointerException по сравнению с языками, где null может быть присвоен любому типу без явного обозначения.