Вступить в клуб →
средняявопросKotlin и жизненный цикл Android

Значение из Java-метода без аннотаций присвоено в non-null тип

Вы мигрируете legacy-модуль с Java на Kotlin. В Java осталось хранилище:

public class LegacyStorage {
    public String getToken() { /* может вернуть null */ }
}

В новом Kotlin-коде написано:

val token: String = legacyStorage.token
println(token.length)

Что произойдёт, если Java-метод вернёт null?

  • Скомпилируется, но упадёт с NullPointerException уже на строке присваивания
  • Не скомпилируется: Kotlin не разрешит присвоить результат Java-метода в non-null тип без явной проверки на null
  • Скомпилируется, token станет пустой строкой: для non-null типа String подставляется значение по умолчанию
  • Скомпилируется и упадёт позже — на строке с обращением к length, потому что до этого момента проверок не вставляется

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела