So steht's zwar da, hast aber falsch verstanden. Versuch mal so einen
case-label mit
break oder
continue anzuspringen
Ein Label ist, einfach gesagt, ein Hinweis im Quelltext, damit du Anweisungen wie [c]break[/c], [c]switch[/c] oder [c]continue[/c] mitteilen kannst, auf welche Stelle im Quelltext du dich jeweils beziehst, quasi "wo es weitergeht". Auch switch-Labels haben diesen Zweck: Sagen, wo es weitergeht. Deswegen erscheint es auch nicht unbedingt unnatürlich, dass switches mit fallthrough daherkommen. Du sagst mit switch-case eben nur: "Ab hier, bitte". Dass danach noch weitere Labels kommen, stört die JVM nicht, und sie hält sich auch nicht daran auf. Labels sind nur Markierungen, keine Anweisungen oder Ähnliches.
Da steht einfach nur als Begriff das Wort Label. Das hat aber Spec mäßig nichts mit dem Label als Ansprungspunkt gemeinsam, denn offiziell heißen diese Label [c]Foo:[/c] Break Targets.
Wie gerade beschrieben: Labels sind nur Markierungen. Wie sie tatsächlich verwendet werden oder wann sie in welcher Form erlaubt sind, steht auf einem völlig anderen Blatt.
Die JLS versteht unter "break target" die
Anweisung, auf die sich ein [c]break[/c] bezieht:
14.15 The break Statement Im Falle einer ganz simplen for-Schleife mit [c]break[/c] (ohne Label!) ist das "break target" eben diese umgebende for-Schleife. Ein Label hilft nur, um klar zu machen, welche Anweisung gemeint ist, wenn man vom standardmäßigen "break target" abweichen und eben eine andere Anweisung als "break target" nutzen möchte.
Das, was du als "Break Target" anführst, ist einfach nur ein Label:
14.7 Labeled Statements In diesem Abschnitt der JLS steht auch nichts von "break target"; diese Vokabel taucht nur im Abschnitt über [c]break[/c] auf.
Wie gesagt, dann löst man das notfalls über diese Flags. Du brauchst ja nicht unbedingt einmal flags, du kannst auch Methoden nehmen, in denen du noch Prüfungen durchführen kannst.
Im Gegensatz zu Flags ist der Verwendungszweck von Labels klar. Der ist sogar so klar, dass eine IDE wie Eclipse dich warnen kann, wenn du ein Label nicht benutzt. Bei einem Flag funktioniert unter anderem das nicht.
Ark