Я не знаю, был ли это «официальный» вариант использования, но следующее выдает предупреждение в Java (которое может привести к ошибкам компиляции, если их смешать с return
операторами, что приведет к недоступности кода):
while (1 == 2) { // Note that "if" is treated differently
System.out.println("Unreachable code");
}
Однако это законно:
while (isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
Поэтому я часто пишу глупый служебный метод для быстрого способа вытащить блок кода, а затем при завершении отладки найти все вызовы к нему, так что при условии, что реализация не изменилась, это можно использовать для этого.
JLS указывает, if (false)
что не вызывает «недоступный код» по той конкретной причине, что это нарушит поддержку флагов отладки, т. Е. В основном это вариант использования (h / t @auselen). ( static final boolean DEBUG = false;
например).
Я заменил while
на if
, производя более неясный случай использования. Я полагаю, что вы можете отключить вашу IDE, например, Eclipse, с таким поведением, но это редактирование через 4 года, и у меня нет среды Eclipse для игры.