Questa è davvero una risposta al commento di seanizer sulla risposta di org.life.java, ma volevo inserire del codice in modo da non poter utilizzare la funzione di commento.
Sebbene sia molto raro trovare un uso per "break label", accade occasionalmente. Il caso più comune è quando cerco qualcosa che si trova in una struttura che richiede un ciclo annidato per la ricerca, come:
search:
for (State state : stateList)
{
for (City city : state.cityList)
{
if (city.zipcode.equals(wantZip))
{
doSomethingTo(city);
break search;
}
}
}
Di solito in questi casi spingo il tutto in una subroutine in modo che su un colpo possa restituire l'oggetto trovato, e se cade dal fondo del ciclo posso restituire null per indicare un non trovato, o forse lanciare un'eccezione. Ma questo è occasionalmente utile.
Francamente, penso che gli inventori di Java abbiano incluso questa funzionalità perché tra questa e la gestione delle eccezioni, hanno eliminato gli ultimi due usi legittimi per GOTO.
Addendum molto tardivo:
Una volta ho visto una fantastica riga di codice. Il programmatore ha scritto:
http://www.example.com/xyz.jsp
for (Foo foo1 : foolist)
In realtà non ha detto "esempio.com" ma il sito web della nostra azienda.
Dà l'impressione che ci sia un URL nel codice. Si compila correttamente, come se facesse qualcosa. Ma che cosa fa?
In realtà non fa niente. "http:" è un'etichetta a cui non fa mai riferimento. Quindi "//" rende il resto della riga un commento.