Quando a condição "Código inacessível" ocorre em Java?
Quando há alguma declaração escrita após o loop infinito, essa declaração se torna o código inacessível. Por exemplo:
for(;;)
{
}
Sytem.out.println("Test-1"); //unreachable code
Mas estou enfrentando alguma dificuldade aqui.
Veja os dois trechos de código abaixo:
Snippet de código1:
for(final int z=4;z<6;)
{
}
System.out.println("Test-2"); //unreachable code
Aqui, a última instrução deve estar inacessível porque o loop é infinito e a saída é como o esperado.
Fragmento de código2:
final int z=4;
for(;;)
{
if(z<2)
break;
}
System.out.println("Test-3"); //not unreachable
Conceitualmente, o loop for no código acima também é infinito, pois z é final eif(z<2)
é determinado apenas no tempo de compilação. A condição if nunca será verdadeira e o loop nunca será interrompido. Mas, a última declaração no código acima não é inacessível.
Questões:
Porque isso está acontecendo ?
Alguém pode me dizer as regras exatas pelas quais podemos ver se o código é inacessível ou não.