2011-04-27 45 views
3

屬性的工作,我覺得以下將拋出NullPointerException爲什麼一流水平與空

class N { 
    static int i; 
    public static void main(String ... args) { 
     System.out.println(((N)null).i); 
    } 
} 

但事實並非如此。爲什麼?

回答

6

因爲i是靜態(class level)成員。它存在於班級,爲它的每一個對象。所以它確實不需要引用對象,所以這部分((N)null)實際上被忽略了,除了類型推斷。它可以並且應該被替換爲N.i