2011-04-27 36 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