Выбор ответа Middle Современная Java: record, sealed спрашивают часто обновлено

Зачем sealed

Вопрос

Что даёт sealed interface Shape permits Circle, Square?

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

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

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

Коротко

Правильный ответ: Компилятор знает всех наследников и проверяет полноту switch. sealed закрывает список наследников.

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

  1. Запрещает создавать объекты Shape через рефлексию и десериализацию
  2. Делает все реализации Shape неизменяемыми, как record
  3. Запрещает наследникам переопределять методы, объявленные в Shape
  4. Компилятор знает всех наследников и проверяет полноту switchправильный ответ

Разбор

sealed закрывает список наследников. Благодаря этому switch по Shape без default компилятор считает исчерпывающим, а при добавлении нового наследника все такие switch перестают компилироваться. Неизменяемость даёт record или final-поля, к sealed она отношения не имеет. Переопределять методы наследники могут. Рефлексия тут ни при чём.

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

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

Термины по теме