Выбор ответа Junior Null-safety обновлено

List<String?> и List<String>?

Вопрос

Чем отличаются List<String?> и List<String>??

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

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

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

Коротко

Правильный ответ: В первом null могут быть элементы, во втором сам список. Знак вопроса относится к тому типу, после которого стоит.

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

  1. В первом null могут быть элементы, во втором сам списокправильный ответ
  2. Ничем, это два способа записать одно и то же
  3. Первый нельзя создать через listOf, только через arrayListOf
  4. В первом null может быть сам список, во втором элементы

Разбор

Знак вопроса относится к тому типу, после которого стоит. List<String?> это всегда существующий список с возможными null внутри, например listOf("a", null). List<String>? это ссылка на список, которая может быть null, но элементы в нём non-null. Бывает и List<String?>?. Для очистки от null есть filterNotNull(), для пустого списка вместо null есть orEmpty().

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

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