Выбор ответа Junior Основы языка спрашивают часто обновлено
val и изменяемый список в Kotlin
Вопрос
Что произойдёт при компиляции и запуске кода?
val items = mutableListOf(1)
items.add(2)
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Код скомпилируется, список станет [1, 2]. val запрещает только переприсвоить ссылку items = ....
Варианты ответа
- Ошибка компиляции во второй строке:
valнельзя менять - Исключение
UnsupportedOperationExceptionприadd - Создастся копия списка, исходный останется
[1] - Код скомпилируется, список станет
[1, 2]правильный ответ
Разбор
val запрещает только переприсвоить ссылку items = .... Сам объект MutableList остаётся изменяемым, поэтому add работает. Ошибка компиляции была бы при items = mutableListOf(). UnsupportedOperationException бросает неизменяемая реализация (например, Collections.unmodifiableList), а копирования при add в Kotlin не бывает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.