J'ai récemment supprimé un bloc de code de notre base de code avant une publication et j'ai utilisé une instruction if(false) pour empêcher l'exécution :
if (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
Cela compile bien et empêchera l'exécution du bloc de code incriminé (à tort ou à raison, ce n'est pas l'argument actuel).
Cependant, un peu par hasard, j'ai changé le bloc ci-dessus en :
while (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
et a reçu une erreur de compilation de déclaration inaccessible.
Je comprends l'erreur de compilation et j'en comprends les raisons, mais j'ai du mal à comprendre la différence entre les deux blocs et pourquoi le premier se compile bien mais pas le second alors qu'ils ont tous les deux des instructions inaccessibles.