Что важно знать
- 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, наследует java.lang.Record и не может расширять другой класс, но реализует интерфейсы…
Полный разборsealed ограничивает список наследников: наследовать или реализовывать могут только перечисленные в permits типы.
Полный разборRecord прозрачен: компоненты — публичный контракт. Не подходит для изменяемых сущностей со скрытым представлением и охраняемыми инвариантами, для JPA-сущностей (нужны конструктор без аргументов, изменяемость, прокси), для иерархий наследования.
Полный разборSwitch-выражение (Java 14) возвращает значение, использует стрелки case A -> ... без проваливания и требует покрыть все варианты (для enum и sealed — проверяет компилятор). Text blocks (Java 15) — многострочные строки в тройных кавычках """ без экранирования…
Полный разборЛокальный вывод типа var, многострочные текстовые блоки, switch-выражения и другие удобства новых версий.
Что генерирует record, канонический и компактный конструкторы, ограничения и когда применять.
Закрытые иерархии через sealed, pattern matching в instanceof и switch, деконструкция записей и проверка исчерпываемости.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.