Выбор ответа Middle Null-safety обновлено
Платформенный тип String!
Вопрос
Метод Java без аннотаций возвращает String. Какой тип увидит Kotlin?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Платформенный тип String!: за null отвечает разработчик. Kotlin не знает, может ли Java-метод вернуть null, и не хочет заставлять проверять каждое значение.
Варианты ответа
String, и компилятор гарантирует, что там неnull- Платформенный тип
String!: заnullотвечает разработчикправильный ответ String?, и каждое обращение требует проверки наnullAny?, потому что Kotlin не доверяет типам из Java
Разбор
Kotlin не знает, может ли Java-метод вернуть null, и не хочет заставлять проверять каждое значение. Поэтому тип платформенный: его можно присвоить и в String, и в String?. Если присвоить в String, а там null, будет NPE прямо в этом месте. Если Java-код размечен @Nullable/@NonNull (AndroidX, JetBrains, JSpecify), Kotlin увидит обычные типы.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.