De JLS 14.21. Inaccessible États
C'est une erreur de compilation si un énoncé ne peut pas être exécutée parce qu'elle est inaccessible.
et
Le reste-la déclaration est accessible ssi le if-then-else est accessible.
Votre if-then-else est accessible. Ainsi, de par la définition du compilateur pense que le reste-la déclaration est accessible.
Remarque: il est Intéressant de noter le code suivant compile également
// This is ok
if (false) { /* do something */ }
Ce n'est pas vrai pour while
// This will not compile
while (false) { /* do something */ }
parce que la définition de l'accessibilité pour l' while
est différent (l'emphase est mienne):
Le contenu de l'énoncé est accessible iff l'instruction while est accessible et l'expression de condition n'est pas une expression constante dont la valeur est false.