2011-04-27 4 views
3

와 함께 작업을 속성 이유는 다음이 클래스 레벨이 널

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

NullPointerException이

를 던질 것이라고 생각하지만 그렇지 않습니다. 왜?

답변

6

i은 정적 (클래스 수준) 멤버이기 때문에. 그것은 그것의 모든 대상을위한 클래스를 위해 존재합니다. 따라서 실제로는 객체에 대한 참조가 필요하지 않으므로이 부분 ((N)null)은 형식 유추를 제외하고 실제로 무시됩니다. 그것은 N.i 일 수 있고 대체되어야합니다.