Выбор ответа Junior Java-интероп обновлено

Где упадёт платформенный тип

Вопрос

Java-метод getTitle() без аннотаций вернул null. Где будет NPE?

val t: String = book.title   // 1
println(t.length)            // 2

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

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

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

Коротко

Правильный ответ: На строке 1. Возвращаемое значение имеет платформенный тип String!.

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

  1. На строке 1правильный ответ
  2. На строке 2
  3. Нигде, t станет null
  4. Ошибка компиляции на строке 1

Разбор

Возвращаемое значение имеет платформенный тип String!. При присваивании в переменную явного non-null типа String компилятор вставляет проверку, и NPE случится прямо на строке 1. Если бы тип не указали (val t = book.title), переменная осталась бы платформенной, и падение произошло бы позже, на t.length. Компилятор такой код пропускает.

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

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

Термины по теме