2012-03-29 70 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噸;」在我的班上?

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

因爲它不是publicprotected類,因此對於處於不同包中的代碼不可見。

相關問題