Выбор ответа Senior Compose: композиция и рекомпозиция обновлено
Что гарантирует @Stable и @Immutable
Вопрос
Что делает аннотация @Immutable на data class?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Обещание компилятору, что свойства не изменятся; нарушишь, UI может не обновиться. @Immutable и @Stable не проверяются, это контракт: разработчик обещает неизменность (или уведомление об изменениях для @Stable), и компилятор начинает считать тип стабильным и пропускать рекомпозиции.
Варианты ответа
- Обещание компилятору, что свойства не изменятся; нарушишь, UI может не обновитьсяправильный ответ
- Компилятор запрещает объявлять в классе
varи выдаёт ошибку при сборке - Класс копируется при каждой передаче в composable, чтобы исключить мутации
- Compose создаёт глубокую копию объекта и сравнивает её с новым при каждой рекомпозиции
Разбор
@Immutable и @Stable не проверяются, это контракт: разработчик обещает неизменность (или уведомление об изменениях для @Stable), и компилятор начинает считать тип стабильным и пропускать рекомпозиции. Если на самом деле объект мутируют, изменения могут не отобразиться. Ни запрета var, ни копирования аннотация не добавляет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.