2014-09-24 29 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

爪哇拆卸與javap表明static是空隙的方法,所以這將是可能的,從理論上說,對創建一個有多個「返回」的字節碼?

+3

JLS規定了'static'初始化中的'return'語句[這裏]非法(http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html# JLS-8.7)。 – 2014-09-24 16:14:42

+0

這看起來像一個JVM問題,而不是JLS問題。這些規格確實有所不同,這可能就是其中之一。 – 2014-09-24 16:15:17

+0

看到:http://stackoverflow.com/questions/11118226/how-to-return-from-a-static-initialization-block-in-java – 2014-09-24 16:17:36

回答

5

JLS聲明static初始值設定項中的return語句是非法的here

相關問題