Недавно я узнал, что следующий Java-код совершенно легален:
myBlock: {
/* ... code ... */
if (doneExecutingThisBlock())
break myBlock;
/* ... more code ... */
}
Обратите внимание, что myBlock
не является циклом - это всего лишь блок кода, который я ограничил фигурными фигурными скобками.
Это похоже на довольно странную особенность. Это означает, что вы можете использовать именованный break
для выхода из оператора if
или анонимного блока, хотя обычно вы не можете использовать оператор break
в этих контекстах.
Мой вопрос таков: есть ли веская причина для этого дизайнерского решения?. Поэтому сделайте так, чтобы вы могли только вырваться из определенных закрывающих операторов, используя помеченные break
, но не регулярные break
s? И зачем вообще допускать такое поведение? Учитывая, насколько (сравнительно) хорошо разработанная Java является языком, я бы предположил, что для этого есть причина, но я, честно говоря, не могу думать об этом.