Выбор ответа Junior Null-safety спрашивают часто обновлено
Ограничения lateinit
Вопрос
Какое объявление НЕ скомпилируется?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: lateinit var count: Int. lateinit нельзя использовать с примитивными типами (Int, Long, Boolean и т.д.), потому что признаком «не инициализировано» служит null в поле, а у примитива его нет.
Варианты ответа
lateinit var adapter: UserAdapterlateinit var name: Stringlateinit var count: Intправильный ответprivate lateinit var repo: Repository
Разбор
lateinit нельзя использовать с примитивными типами (Int, Long, Boolean и т.д.), потому что признаком «не инициализировано» служит null в поле, а у примитива его нет. Для чисел используют Delegates.notNull<Int>() или значение по умолчанию. Также lateinit только для var и только для non-null типов. Остальные три варианта корректны, модификатор видимости не мешает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.