Выбор ответа Junior Null-safety спрашивают часто обновлено

Что делает оператор !!

Вопрос

Что делает оператор !! в выражении name!!.length?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Бросает NPE при null, иначе даёт non-null значение. !! превращает nullable-значение в non-null и бросает NPE, если там null.

Варианты ответа

  1. Возвращает null, если name равен null
  2. Бросает NPE при null, иначе даёт non-null значениеправильный ответ
  3. Подставляет пустую строку вместо null
  4. Проверяет name при компиляции и не даёт собрать код с null

Разбор

!! превращает nullable-значение в non-null и бросает NPE, если там null. Это ручной отказ от защиты компилятора. Возврат null делает ?., подстановку значения ?:. Компилятор не может знать значение в рантайме, поэтому !! проверяется только при выполнении.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.