Выбор ответа Middle Современная Java: record, sealed обновлено
Guard в switch
Вопрос
Что делает case Rect r when r.width() == r.height() -> "square";?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Срабатывает, если объект Rect и условие после when истинно. when задаёт guard: ветка выбирается, если тип совпал и условие true.
Варианты ответа
- Срабатывает для любого объекта, у которого есть метод width
- Проверяет условие до проверки типа
- Это синтаксис Kotlin, в Java не скомпилируется
- Срабатывает, если объект Rect и условие после
whenистинноправильный ответ
Разбор
when задаёт guard: ветка выбирается, если тип совпал и условие true. Переменная r в условии уже приведена к Rect. Если условие ложно, проверяются следующие ветки, поэтому общий case Rect r ставят ниже. Это синтаксис Java 21 (JEP 441).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Современная Java: record, sealed»
- switch-выражение с yield
- Pattern matching
- record
- LTS-версии Java
- Что генерирует record
- Что выведет: record equals и toString
- Неизменяемость record
- Зачем sealed