¿Cuándo se produce la condición "Código inalcanzable" en Java?
Cuando hay alguna declaración escrita después del bucle infinito, esa declaración se convierte en el código inalcanzable. Por ej .:
for(;;)
{
}
Sytem.out.println("Test-1"); //unreachable code
Pero estoy enfrentando algunas dificultades aquí.
Mire los dos fragmentos de código a continuación:
Fragmento de código1:
for(final int z=4;z<6;)
{
}
System.out.println("Test-2"); //unreachable code
Aquí, la última declaración debe ser inalcanzable porque el bucle es infinito y la salida es la esperada.
Fragmento de código2:
final int z=4;
for(;;)
{
if(z<2)
break;
}
System.out.println("Test-3"); //not unreachable
Conceptualmente, el bucle for en el código anterior también es infinito ya que z es final yif(z<2)
se determina solo en tiempo de compilación. La condición if nunca será verdadera y el ciclo nunca se romperá. Pero, la última declaración en el código anterior no es inalcanzable.
Preguntas:
¿Por qué está pasando esto?
¿Alguien puede decirme las reglas exactas por las cuales podemos ver si el código es inalcanzable o no?