Ключевое слово yield в Java

Представленное в Java 13 как часть улучшений в Project Amber, ключевое слово 'yield' направлено на упрощение кода, делая выражения switch более лаконичными и выразительными. Давайте узнаем о ключевом слове 'yield', его назначении, синтаксисе и рассмотрим несколько практических примеров.

1. Ключевое слово «yield»

Ключевое слово 'yield' улучшает выражения switch, позволяя выражению производить результат напрямую. Давайте разберемся на примере.

В следующей программе выражение switch оценивает значение переменной «day».

  • Если «day» соответствует любому дню недели(с ПН по ПТ), на консоль выводится сообщение «It is WeekDay» и логический результат устанавливается равным true.
  • Если «day» соответствует SAT или SUN, на консоль выводится сообщение «It is Weekend» и логический результат устанавливается в false.
  • Значения «истина» и «ложь» неявно возвращаются как результаты для соответствующих случаев.
 Логический результат = switch(day) {случай ПН, ВТ, СР, ЧТ, ПТ -> {System.out.println("СегодняДеньНедели");истинный;}случай СБ, ВС -> {System.out.println("Сегодня выходные");ЛОЖЬ;}};System.out.println("Результат равен " + result);

Давайте перепишем приведенную выше программу снова, используя ключевое слово yield, и обратите внимание на разницу.

 Логический результат = switch(day) {случай ПН, ВТ, СР, ЧТ, ПТ -> {System.out.println("СегодняДеньНедели");выход истинный;}случай СБ, ВС -> {System.out.println("Сегодня выходные");выход ложный;}};System.out.println("Результат равен " + result);

В этой версии единственным отличием является явное использование ключевого слова «yield», которое служит двум целям:

  • Он предоставляет значение для выражения переключения.
  • Он действует как терминатор, указывая, что поток управления должен выйти из выражения switch.

Вы можете заметить, что обе версии программы достигают одинаковой функциональности. Однако ключевое слово 'yield' во второй версии добавляет явность оператору return в блоках case, тем самым давая понять, что возвращается значение, и завершая выражение switch.

2. Разница между ключевыми словами «yield» и «return»

Ключевые слова «yield» и «return» в Java служат разным целям и используются в разных контекстах.

  • Оператор return возвращает управление вызывающему методу или конструктору.
  • Оператор yield передает управление, заставляя содержащееся в нем выражение switch выдавать указанное значение.

Перечислим различия более подробно:

Особенность Возвращаться Урожай
Используется в Методы, конструкторы, циклы, лямбда-выражения В частности, в выражениях switch
Прекращение Завершает выполнение всего метода. Завершает выполнение выражения switch.
Объем Универсальное ключевое слово, используемое в различных контекстах. Специализировано для использования в выражениях switch и не применяется где-либо еще.

Напишите мне в комментариях свои вопросы, касающиеся улучшенного оператора switch с ключевым словом yield.

Исходный код на Github

Прокрутить вверх