我认为以下内容会引发NullPointerException

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

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

最佳答案

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

07-26 02:09