Назад к вопросам
Junior
110
questionbank

Что такое '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 может быть присвоен любому типу без явного обозначения.