На этом шаге мы рассмотрим назначение и пример использования этого оператора.
Чтобы вызвать функцию для переменной, тип которой поддерживает значение null, также можно использовать оператор !!.. Но предупреждаем: это более "суровый" способ, чем безопасный вызов, и его не следует использовать без крайней необходимости. Визуально !!. должен выделяться в коде, потому что это опасный вариант. Использовать !!. - все равно что сказать компилятору: "Если я хочу провести операцию с несуществующим значением, то ТРЕБУЮ, чтобы ты вызвал NullPointerException!" (кстати говоря, этот оператор также называется оператором контроля non-null, но чаще просто оператором двойного восклицательного знака).
Обычно мы выступаем против оператора !!., но... попробуйте его на практике.
fun main() { var beverage = readLine()!!.capitalize() // beverage = null println(beverage) }
Рис.1. Использование оператора !!. (Tavern.kt)
Конструкция
beverage = readLine()!!.capitalize()
Иногда использование оператора !!. оправданно. Например, вы не контролируете тип переменной, но точно знаете, что она никогда не получит значение null. Если вы абсолютно точно уверены, что переменная не станет null, то применение оператора !!. может быть неплохим выходом. Хороший пример применения этого оператора мы покажем дальше.
На следующем шаге мы рассмотрим проверку на равенство null.