Выбор ответа Middle Классы, data и sealed обновлено

Где можно объявлять наследников sealed

Вопрос

Где можно объявить прямого наследника sealed interface Event?

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

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

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

Коротко

Правильный ответ: В том же модуле и пакете, что и Event. С Kotlin 1.5 прямые наследники sealed-класса или интерфейса могут лежать в разных файлах, но в том же модуле компиляции и том же пакете.

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

  1. Только внутри тела Event, как вложенный класс
  2. В любом модуле, который зависит от модуля с Event
  3. Только в том же файле, что и Event
  4. В том же модуле и пакете, что и Eventправильный ответ

Разбор

С Kotlin 1.5 прямые наследники sealed-класса или интерфейса могут лежать в разных файлах, но в том же модуле компиляции и том же пакете. Так компилятор знает полный список и проверяет when. Ограничение «тот же файл» было до 1.5. Другие модули добавить наследника не могут, иначе пропала бы проверка полноты.

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

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