2012-03-29 2 views
0

다음 코드는 완벽하게 작동합니다.java.lang.Thread 구현의 정적 중첩 클래스가 표시되지 않는 이유는 무엇입니까?

public class StaticClass { 

public static void main(String[] args) { 
    L.P h = new L.P(); 
    h.show(); 

} 

} 

class L { 

static class P { 
    public void show() { 
     System.out.println("This is static nested class."); 
    } 
} 

} 

정적 중첩 클래스는 "정적 클래스 WeakClassKey를 확장 WeakReference를>"그럼 왜 java.lang.Thread의에 클래스에 의해 액세스 할 수 없습니다입니다 "Thread.WeakClassKey의 t;" 수업 시간에?

java.lang.Thread의 소스 코드는 http://www.docjar.com/html/api/java/lang/Thread.java.html [in line # 1984]에서 확인할 수 있습니다.

답변

4

StaticClassL과 동일한 패키지에있는 P 클래스 (즉 패키지 개인) 액세스 개질제 디폴트를 갖는다. 그것이 접근 가능한 이유입니다. WeakClassKey에는 동일한 수정자가 있지만 다른 패키지에 있습니다. java.lang의 수업 만 액세스 할 수 있습니다.

6

public 클래스가 아니기 때문에.

static class WeakClassKey 

동일한 패키지의 클래스 만이 패키지를 참조 할 수 있도록 패키지 권한이 있습니다.

5

이 코드는 public 또는 protected 클래스가 아니기 때문에 다른 패키지에있는 코드에는 표시되지 않으므로

관련 문제