Почему атрибуты уровня класса работают с 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,

Другие вопросы по тегам