Почему атрибуты уровня класса работают с Null
Я думаю, что следующий бросит NullPointerException
class N {
static int i;
public static void main( String ... args ) {
System.out.println( ((N)null).i );
}
}
Но это не так. Зачем?
1 ответ
Так как i
является статическим (на уровне класса) членом. Он существует для класса, для каждого его объекта. Так что это действительно не требует ссылки на объект, поэтому эта часть ((N)null)
фактически игнорируется, за исключением вывода типа. Его можно и нужно заменить на N.i
,