Nie wiem, czy był to „oficjalny” przypadek użycia, ale poniższe powoduje wygenerowanie ostrzeżenia w Javie (które może dodatkowo powodować błędy kompilacji, jeśli zostaną zmieszane z return
instrukcjami, prowadząc do nieosiągalnego kodu):
while (1 == 2) { // Note that "if" is treated differently
System.out.println("Unreachable code");
}
Jest to jednak legalne:
while (isUserAGoat()) {
System.out.println("Unreachable but determined at runtime, not at compile time");
}
Często więc piszę głupią metodę użyteczności dla najszybszego sposobu pozorowania bloku kodu, a następnie podczas debugowania znajduję wszystkie wywołania do niego, więc jeśli implementacja się nie zmieni, można tego użyć.
JLS podkreśla, if (false)
że nie wyzwala „nieosiągalnego kodu” z tego konkretnego powodu, że spowodowałoby to przerwanie obsługi flag debugowania, tj. Zasadniczo ten przypadek użycia (h / t @auselen). ( static final boolean DEBUG = false;
na przykład).
Zamieniłem while
na if
, tworząc bardziej niejasny przypadek użycia. Sądzę , że dzięki temu zachowaniu możesz udoskonalić swoje IDE, takie jak Eclipse, ale ta edycja jest za 4 lata i nie mam środowiska Eclipse do zabawy.