Выбор ответа Senior Compose: композиция и рекомпозиция обновлено

Что гарантирует @Stable и @Immutable

Вопрос

Что делает аннотация @Immutable на data class?

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

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

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

Коротко

Правильный ответ: Обещание компилятору, что свойства не изменятся; нарушишь, UI может не обновиться. @Immutable и @Stable не проверяются, это контракт: разработчик обещает неизменность (или уведомление об изменениях для @Stable), и компилятор начинает считать тип стабильным и пропускать рекомпозиции.

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

  1. Обещание компилятору, что свойства не изменятся; нарушишь, UI может не обновитьсяправильный ответ
  2. Компилятор запрещает объявлять в классе var и выдаёт ошибку при сборке
  3. Класс копируется при каждой передаче в composable, чтобы исключить мутации
  4. Compose создаёт глубокую копию объекта и сравнивает её с новым при каждой рекомпозиции

Разбор

@Immutable и @Stable не проверяются, это контракт: разработчик обещает неизменность (или уведомление об изменениях для @Stable), и компилятор начинает считать тип стабильным и пропускать рекомпозиции. Если на самом деле объект мутируют, изменения могут не отобразиться. Ни запрета var, ни копирования аннотация не добавляет.

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

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