Выбор ответа Middle Современная Java: record, sealed обновлено

Guard в switch

Вопрос

Что делает case Rect r when r.width() == r.height() -> "square";?

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

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

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

Коротко

Правильный ответ: Срабатывает, если объект Rect и условие после when истинно. when задаёт guard: ветка выбирается, если тип совпал и условие true.

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

  1. Срабатывает для любого объекта, у которого есть метод width
  2. Проверяет условие до проверки типа
  3. Это синтаксис Kotlin, в Java не скомпилируется
  4. Срабатывает, если объект Rect и условие после when истинноправильный ответ

Разбор

when задаёт guard: ветка выбирается, если тип совпал и условие true. Переменная r в условии уже приведена к Rect. Если условие ложно, проверяются следующие ветки, поэтому общий case Rect r ставят ниже. Это синтаксис Java 21 (JEP 441).

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

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

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