Почему не существует нескольких точек выхода из статического инициализатора? Указывает ли спецификация языка Java?Java - можем ли мы вернуться из инициализатора?
При попытке компиляции кода, как:
class HelloWorldApp {
static {
if(1 > 2)
return;
System.out.println("static");
}
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Компилятор выводит ошибку: return outside method
Java разборки с javap
показывает, что static
является метод недействительным, поэтому было бы возможно, теоретически, к создать байт-код, который будет иметь несколько «возвратов»?
JLS заявляет, что оператор 'return' в инициализаторе' static' является незаконным [здесь] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html# JLS-8.7). –
Это похоже на вопрос JVM, а не JLS. Слишком разные спецификации иногда меняются, и это может быть один из них. –
см. По адресу: http://stackoverflow.com/questions/11118226/how-to-return-from-a-static-initialization-block-in-java –