Что важно знать
- Records — неизменяемые носители данных с готовыми equals, hashCode, toString.
- Sealed-типы ограничивают наследников; вместе с pattern matching в switch компилятор проверяет полноту.
- LTS-версии: 17, 21, 25; в проектах чаще 17 и 21.
var, records, sealed-типы, pattern matching, текстовые блоки и switch-выражения.
Практика. Перевести DTO учебного проекта на records.
Практика. Описать результат операции (успех, ошибка валидации, ошибка системы) sealed-иерархией и обработать switch с pattern matching.
var — статический вывод типа компилятором из инициализатора; тип фиксируется при компиляции, динамики нет.
Стрелочный case L -> не проваливается и не требует break; switch-выражение возвращает значение (для блока — yield); по enum и sealed-типам компилятор проверяет полноту — забытый…
record — компактный неизменяемый носитель данных: поля в заголовке, а конструктор, аксессоры, equals, hashCode и toString создаёт компилятор.
Компилятор генерирует private final поля, канонический конструктор, аксессоры (name(), без get), equals, hashCode, toString по всем компонентам. Record неявно final, наследует…
sealed ограничивает список наследников: наследовать или реализовывать могут только перечисленные в permits типы.
Record прозрачен: компоненты — публичный контракт. Не подходит для изменяемых сущностей со скрытым представлением и охраняемыми инвариантами, для JPA-сущностей (нужны конструктор…
Локальный вывод типа var, многострочные текстовые блоки, switch-выражения и другие удобства новых версий.
Что генерирует record, канонический и компактный конструкторы, ограничения и когда применять.
Закрытые иерархии через sealed, pattern matching в instanceof и switch, деконструкция записей и проверка исчерпываемости.
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.