🔍 Ответ на задачу про Records: Компактный конструктор 📝
В рекордах (Java 16+) есть "компактный конструктор". У него нет круглых скобок с параметрами. Он автоматически получает те же параметры, что объявлены в заголовке рекорда. Это идеальное место для валидации или нормализации данных (например,
Вывод:
Код скомпилируется и выбросит исключение. Это правильный способ гарантировать валидность данных в Immutable записях.
⚡️ Не перепутайте:
В компактном конструкторе не нужно писать
#java #records #java17 #clean_code #basics #интервью #java_interview_tasks
В рекордах (Java 16+) есть "компактный конструктор". У него нет круглых скобок с параметрами. Он автоматически получает те же параметры, что объявлены в заголовке рекорда. Это идеальное место для валидации или нормализации данных (например,
name = name.trim()).Вывод:
Код скомпилируется и выбросит исключение. Это правильный способ гарантировать валидность данных в Immutable записях.
⚡️ Не перепутайте:
В компактном конструкторе не нужно писать
this.name = name, Java сделает это сама в конце.#java #records #java17 #clean_code #basics #интервью #java_interview_tasks
👍8❤1🔥1
🔍 Ответ на задачу про Sealed Classes: Закрытая иерархия 🔒
Ключевое слово
Наследники
Вывод:
⚡️ Не перепутайте:
Sealed-классы отлично работают вместе с Pattern Matching в
#java #java17 #sealedclasses #oop #basics #интервью #java_interview_tasks
Ключевое слово
sealed (Java 17) разрешает наследование только тем классам, которые перечислены в списке permits. Любой другой класс (как Triangle) получит ошибку компиляции при попытке расширить Shape.Наследники
sealed класса обязаны быть либо final, либо sealed, либо non-sealed (открывающим иерархию обратно).Вывод:
Triangle нет в списке разрешенных. Поэтому вариант с Triangle не скомпилируется.⚡️ Не перепутайте:
Sealed-классы отлично работают вместе с Pattern Matching в
switch, позволяя компилятору проверять, все ли возможные подтипы вы обработали.#java #java17 #sealedclasses #oop #basics #интервью #java_interview_tasks
✍5