Следующий код выдает ошибку unreachable statement
компилятораНедоступен код
public static void main(String[] args) {
return;
System.out.println("unreachable");
}
Иногда для целей тестирования хотения предотвратить метод от вызова, поэтому быстрый способ сделать это (вместо того, чтобы комментировать это везде он используется) должен немедленно вернуться из метода, чтобы метод ничего не делал. То, что я тогда всегда сделать, чтобы получить Arround ошибки компилятора это
public static void main(String[] args) {
if (true) {
return;
}
System.out.println("unreachable");
}
Я просто любопытно, почему это ошибка компилятора ?? Будет ли он каким-то образом разбивать Java-байт-код, защищать ли он программиста или это что-то еще?
Также (и это для меня более интересно), если компиляция java в байт-код делает любую оптимизацию (или даже если это не так), то почему бы не обнаружить вопиющий недостижимый код во втором примере? Что было бы псевдокодом компилятора для проверки того, что заявление недостижима?
вы можете прочитать раздел 14.16 на этой странице: http://java.sun.com/docs/books/jls/second_edition/html/statements.doc.html – Johnydep
Спасибо за ссылку. Я думаю, что я застрял в мышлении «ассемблера», потому что мне трудно понять, как «прыжки», вызванные вызовом метода, оператор 'if' и' return' могут позволить обнаружить недостижимую строку в первом но не во втором. – ughzan
Хорошее обходное решение с if (true) thingie .... – Ted