Шаг 68.
Основы Kotlin.
Null-безопасность и исключения. Null-безопасность. Вариант второй: оператор !!.

    На этом шаге мы рассмотрим назначение и пример использования этого оператора.

    Чтобы вызвать функцию для переменной, тип которой поддерживает значение null, также можно использовать оператор !!.. Но предупреждаем: это более "суровый" способ, чем безопасный вызов, и его не следует использовать без крайней необходимости. Визуально !!. должен выделяться в коде, потому что это опасный вариант. Использовать !!. - все равно что сказать компилятору: "Если я хочу провести операцию с несуществующим значением, то ТРЕБУЮ, чтобы ты вызвал NullPointerException!" (кстати говоря, этот оператор также называется оператором контроля non-null, но чаще просто оператором двойного восклицательного знака).

    Обычно мы выступаем против оператора !!., но... попробуйте его на практике.

fun main() {
    var beverage = readLine()!!.capitalize()
//    beverage = null
    println(beverage)
}
Файл с проектом можно взять здесь.


Рис.1. Использование оператора !!. (Tavern.kt)

    Конструкция

  beverage = readLine()!!.capitalize() 
читается так: "Мне все равно, что beverage может быть null. Вызвать capitalize()!" Однако если beverage действительно будет иметь значение null, вы получите NullPointerException.

    Иногда использование оператора !!. оправданно. Например, вы не контролируете тип переменной, но точно знаете, что она никогда не получит значение null. Если вы абсолютно точно уверены, что переменная не станет null, то применение оператора !!. может быть неплохим выходом. Хороший пример применения этого оператора мы покажем дальше.

    На следующем шаге мы рассмотрим проверку на равенство null.




Предыдущий шаг Содержание Следующий шаг