Выбор ответа Middle Классы, data и sealed обновлено
Где можно объявлять наследников sealed
Вопрос
Где можно объявить прямого наследника sealed interface Event?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В том же модуле и пакете, что и Event. С Kotlin 1.5 прямые наследники sealed-класса или интерфейса могут лежать в разных файлах, но в том же модуле компиляции и том же пакете.
Варианты ответа
- Только внутри тела
Event, как вложенный класс - В любом модуле, который зависит от модуля с
Event - Только в том же файле, что и
Event - В том же модуле и пакете, что и
Eventправильный ответ
Разбор
С Kotlin 1.5 прямые наследники sealed-класса или интерфейса могут лежать в разных файлах, но в том же модуле компиляции и том же пакете. Так компилятор знает полный список и проверяет when. Ограничение «тот же файл» было до 1.5. Другие модули добавить наследника не могут, иначе пропала бы проверка полноты.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.