¿Por qué Java permite interrupciones etiquetadas en declaraciones arbitrarias?

Acabo de enterarme hoy que el siguiente código Java es perfectamente legal:

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

    if (doneExecutingThisBlock())
        break myBlock;

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

Tenga en cuenta quemyBlock no es un bucle: es solo un bloque de código que he delimitado con llaves.

Esto parece una característica bastante extraña. Significa que puedes usar unabreak para salir de unaif declaración o bloque anónimo, aunque normalmente no puede usar unabreak en estos contextos.

Mi pregunta es esta: ¿Hay una buena razón para esta decisión de diseño? Es decir, ¿por qué hacerlo para que solo pueda salir de ciertas declaraciones adjuntas usando la etiquetabreaks pero no regularbreaks? ¿Y por qué permitir este comportamiento? Dado que Java (comparativamente) está bien diseñado es un lenguaje, supongo que hay una razón para esto, pero honestamente no puedo pensar en uno.

Respuestas a la pregunta(8)

Su respuesta a la pregunta