为什么java.lang.Thread实现中的静态嵌套类不可见?

Deb*_*iti 0 java multithreading jvm visibility nested

以下代码完美无缺.

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.");
    }
}

}
Run Code Online (Sandbox Code Playgroud)

那么为什么".Thread.WeakClassKey t"无法访问java.lang.Thread类中的静态嵌套类"static class WeakClassKey extends WeakReference>".在我班上?

java.lang.Thread的源代码可以在这里找到:http://www.docjar.com/html/api/java/lang/Thread.java.html [在#1984行].

Gra*_*ray 6

因为它不是一个public类.

static class WeakClassKey
Run Code Online (Sandbox Code Playgroud)

这具有包权限,因此只允许同一包中的类引用它.


Ern*_*ill 5

因为它不是一个类publicprotected类,因此对于不同包中的代码是不可见的.