tipos switch sentencia que programacion else ejemplos ejemplo java if-statement naming

java - switch - ¿Por qué debería dar un nombre a una declaración If?



switch java ejemplo menu (4)

Si tiene un bloque de código con un nombre, puede usar break para salir, ese es el uso que he encontrado para nombrar bloques.

name: if(true) { // do something if(/* condition */) { break name; } // do more }

también funciona sin el si:

name: { // do something if(/* condition */) { break name; } // do more }

Esto surge en mi trabajo cuando hay un conjunto de condiciones de guardia en alguna lógica, y otro conjunto de lógica que se caerá independientemente del resultado de los guardias.

Otro ejemplo donde las estructuras alternativas son más difíciles de leer y modificar:

block: if(/* guard */) { // prep work if(/* guard */) { break block; } // prep work if(/* guard */) { break block; } // real work }

aunque usualmente uso un bloque desnudo y no un si.

Acabo de descubrir que puedo dar un nombre a las declaraciones For y While. Entiendo que es útil si quieres romper o continuar un ciclo específico.
Pero ¿por qué debería darle un nombre a un If? Parece inútil

name: if(true){ //do something }

Esto compila sin problemas


Al igual que romper un ciclo, es posible que desee retroceder o hacia una instrucción if. Aunque cada vez que comienzas a pensar en esto, busca en cambio crear un nuevo método.


Puede usar etiquetas antes de cualquier bloque de instrucción. Este es quizás el más comúnmente utilizado para bucles, pero es perfectamente válido en otros lugares.


La respuesta de Sarah Happy es en realidad más correcta que la mía al mostrar que puede usar break para romper bloques de código, además de bucles, por lo que le sugiero que mire su respuesta.

Esa es de hecho una etiqueta , que como dijiste es para bucles For y While. Es válido en otros lugares, pero me gustaría agregar que no puedes usar

goto name;

Mientras goto es una palabra reservada, Java no admite goto, pero sí la admite en forma de bucles etiquetados junto con break y continue .

Si amplió su muestra de código para incluir un goto, como:

name: if(true){ //do something } goto name;

Obtendría errores, diciendo que tanto illegal start of expression como not a statement

Alternativamente, si trataste de continue con tu etiqueta, pero sin un bucle, como:

name: if(true){ //do something } continue name;

Obtendrá undefined label: name

Entonces, en términos del compilador, tener una etiqueta sin un bucle está bien, pero es prácticamente inútil sin un bucle.