我认为以下内容会引发NullPointerException
class N {
static int i;
public static void main( String ... args ) {
System.out.println( ((N)null).i );
}
}
但事实并非如此。为什么?
最佳答案
因为i
是静态(类级别)成员。它对于类,对于它的每个对象都存在。因此,它实际上不需要引用对象,因此除了类型推断外,这部分((N)null)
实际上被忽略。可以并且应该将其替换为N.i
。