To jest naprawdę odpowiedź na komentarz seanizera na temat odpowiedzi org.life.java, ale chciałem wprowadzić jakiś kod, więc nie mogłem skorzystać z funkcji komentarza.
Chociaż bardzo rzadko znajduję zastosowanie określenia „break label”, zdarza się to sporadycznie. Najczęstszym przypadkiem jest wyszukiwanie czegoś, co znajduje się w strukturze wymagającej zagnieżdżonej pętli do wyszukiwania, na przykład:
search:
for (State state : stateList)
{
for (City city : state.cityList)
{
if (city.zipcode.equals(wantZip))
{
doSomethingTo(city);
break search;
}
}
}
Zwykle w takich przypadkach wsuwam całość do podprogramu tak, że po trafieniu mogę zwrócić znaleziony obiekt, a jeśli wypadnie z dolnej części pętli, mogę zwrócić wartość null, aby wskazać nie znaleziono, lub może wyrzucić wyjątek. Ale czasami jest to przydatne.
Szczerze mówiąc, myślę, że wynalazcy Javy włączyli tę funkcję, ponieważ między tym a obsługą wyjątków wyeliminowali dwa ostatnie legalne zastosowania GOTO.
Dodatek bardzo późny:
Widziałem kiedyś świetną linię kodu gagów. Programista napisał:
http://www.example.com/xyz.jsp
for (Foo foo1 : foolist)
W rzeczywistości nie powiedział „example.com”, ale witryna internetowa naszej firmy.
Sprawia wrażenie, że w kodzie znajduje się adres URL. Kompiluje się pomyślnie, jakby coś robił. Ale ... co to robi?
W rzeczywistości nic nie robi. „http:” to etykieta, do której nigdy się nie odwołuje. Następnie „//” zmienia pozostałą część wiersza w komentarz.