¿Existe una declaración goto en Java?
Estoy confundido acerca de esto. A la mayoría de nosotros nos han dicho que no existe ninguna declaración goto en Java.
Pero descubrí que es una de las palabras clave en Java. ¿Donde puede ser usado? Si no se puede utilizar, ¿por qué se incluyó en Java como palabra clave?
James Gosling creó la JVM original con soporte de goto
declaraciones, pero luego eliminó esta característica por considerarla innecesaria. La razón principal por la goto
que es innecesario es que generalmente se puede reemplazar con declaraciones más legibles (como break/continue
) o extrayendo un fragmento de código en un método.
Fuente: James Gosling, sesión de preguntas y respuestas
La lista de palabras clave de Java especifica la goto
palabra clave, pero está marcada como "no utilizada".
Estaba en la JVM original (ver respuesta de @VitaliiFedorenko ), pero luego se eliminó. Probablemente se mantuvo como palabra clave reservada en caso de que se agregara a una versión posterior de Java.
Si goto
no estuviera en la lista y se agregara al idioma más adelante, el código existente que usaba la palabra goto
como identificador (nombre de variable, nombre de método, etc.) se rompería. Pero debido a que goto
es una palabra clave, dicho código ni siquiera se compilará en el presente, y sigue siendo posible hacer que haga algo más adelante, sin romper el código existente.
La palabra clave existe, pero no está implementada.
La única buena razón para usar goto que se me ocurre es esta:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
goto outsideloops; // to break out of both loops
}
}
outsideloops:
En Java puedes hacer esto así:
loops:
for (int i = 0; i < MAX_I; i++) {
for (int j = 0; j < MAX_J; j++) {
// do stuff
break loops;
}
}
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html
"Las palabras clave const y goto están reservadas, aunque no se utilicen actualmente. "