Byłem niedawno usuwając blok kodu z naszej bazy kodu przed wydaniem i używane if (false) oświadczenie, aby zapobiec wykonanie:Chociaż (fałsz) powoduje błąd kompilacji nieosiągalny oświadczenie
if (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
To kompiluje grzywny i uniemożliwi wykonanie naruszającego blok kodu (prawy lub zły, to nie jest aktualny argument).
Jednak rodzaju przez przypadek zmieniłem blok wyżej:
while (false) {
ArrayList<String> list = new ArrayList<String>();
...
}
i otrzymał oświadczenie nieosiągalny błąd kompilacji.
Doceniam błąd kompilacji i rozumiem powody, jednak staram się zrozumieć różnicę między tymi dwoma blokami i dlaczego pierwszy kompiluje dobrze, ale drugi nie, gdy oba mają nieosiągalne oświadczenia.
Domyślam się, że jest dużo łatwiej popełnić błąd udziałem 'zrób while' niż' if'. To właśnie dlatego ten drugi przypadek prowadzi do błędu. – Renan
Domyślam się, że pierwotną intencją autora kompilatora było spowodowanie nieosiągalnego błędu. Jednak ponieważ w praktyce programistycznej ludzie często wyłączają kod za pomocą opcji (false), dozwolono to jako specjalny przypadek. – CBass