3

我认为以下会抛出 NullPointerException

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

但事实并非如此。为什么?

4

1 回答 1

6

因为i是静态(类级别)成员。它为阶级而存在,为它的每一个对象而存在。所以它真的不需要引用对象,所以这部分((N)null)实际上被忽略了,除了类型推断。它可以而且应该被替换为N.i.

于 2011-04-27T00:26:16.690 回答