Недавно я удалил блок кода из нашей базы кода до выпуска и использовал оператор if (false), чтобы предотвратить выполнение:
if (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
Это компилируется и предотвратит выполнение блокирующего кода кода (правильно или неправильно, а не текущий аргумент).
Однако, случайно, я изменил блок выше:
while (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
и получил ошибку компиляции недостижимого оператора.
Я ценю ошибку компиляции и понимаю причины, однако, я изо всех сил пытаюсь понять разницу между этими двумя блоками и почему первый компилирует отлично, но последний не делает, когда у них обоих есть недостижимые утверждения.