Таким образом, я предполагаю, что официальные учебные пособия и их объяснения неверны ...

ня я только что узнал, что следующий код Java абсолютно легален:

myBlock: {
    /* ... code ... */

    if (doneExecutingThisBlock())
        break myBlock;

    /* ... more code ... */
}

Обратите внимание, чтоmyBlock это не цикл - это просто блок кода, который я разделил фигурными скобками.

Это кажется довольно странной особенностью. Это означает, что вы можете использовать именованныйbreak вырваться изif заявление или анонимный блок, хотя вы обычно не можете использоватьbreak утверждение в этих контекстах.

У меня вопрос такой:есть ли веская причина для такого дизайнерского решения? То есть, зачем делать так, чтобы вы могли вырываться только из определенных вложенных операторов, используяbreakс, но не регулярноbreaks? И зачем вообще допускать такое поведение? Учитывая (сравнительно) хорошо спроектированную Java как язык, я бы предположил, что есть причина для этого, но я, честно говоря, не могу придумать одну.

Ответы на вопрос(8)

Ваш ответ на вопрос