2014-09-24 5 views
3

Почему не существует нескольких точек выхода из статического инициализатора? Указывает ли спецификация языка 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 является метод недействительным, поэтому было бы возможно, теоретически, к создать байт-код, который будет иметь несколько «возвратов»?

+3

JLS заявляет, что оператор 'return' в инициализаторе' static' является незаконным [здесь] (http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html# JLS-8.7). –

+0

Это похоже на вопрос JVM, а не JLS. Слишком разные спецификации иногда меняются, и это может быть один из них. –

+0

см. По адресу: http://stackoverflow.com/questions/11118226/how-to-return-from-a-static-initialization-block-in-java –

ответ

5

JLS заявляет, что заявление return в инициализаторе static является незаконным here.

Смежные вопросы