Выбор ответа Junior Java-интероп обновлено
Где упадёт платформенный тип
Вопрос
Java-метод getTitle() без аннотаций вернул null. Где будет NPE?
val t: String = book.title // 1
println(t.length) // 2
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: На строке 1. Возвращаемое значение имеет платформенный тип String!.
Варианты ответа
- На строке 1правильный ответ
- На строке 2
- Нигде,
tстанетnull - Ошибка компиляции на строке 1
Разбор
Возвращаемое значение имеет платформенный тип String!. При присваивании в переменную явного non-null типа String компилятор вставляет проверку, и NPE случится прямо на строке 1. Если бы тип не указали (val t = book.title), переменная осталась бы платформенной, и падение произошло бы позже, на t.length. Компилятор такой код пропускает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Значения по умолчанию через рефлексию Java
Следующий вопрос
SAM-конверсия Java-интерфейсов