2012-03-29 71 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类,因此对于处于不同包中的代码不可见。

相关问题