为什么类级属性适用于Null

Osc*_*Ryz 3 java nullpointerexception class-attributes

我认为以下将抛出NullPointerException

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

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

And*_*rey 6

因为i是静态(类级别)成员.它适用于类,适用于它的每个对象.所以它确实不需要引用对象,所以((N)null)除了类型推断之外,这部分实际上被忽略了.它可以而且应该被取代N.i.